2017-09-14 3 views
0

Ich möchte eine einfache Suchfunktion für meine Tabelle machen. Diese Tabelle enthält die Daten aus zwei mssql-Tabellen [Addresses] und [Companies]. Die Tabellen haben eine Eins-zu-eins-Beziehung.Suchfunktion mit eins zu eins Beziehung in Laravel 5.4

class Addresses extends Model 
{ 
    protected $table = "Addresses"; 
    protected $primaryKey = 'adress'; 
    public $timestamps = false; 

    public function scopeSearchAddress($query, $searchTerm) 
    { 
     return $query->where('city', 'LIKE', '%'.$searchTerm.'%') 
        ->orWhere('name', 'LIKE', '%'.$searchTerm.'%') 
        ->orWhere('street', 'LIKE', '%'.$searchTerm.'%'); 
    } 

    public function company() 
    { 
     return $this->hasOne(Company::class, 'adress'); 
    } 

Die Beziehung ist eine Adresse eine Firma. Die erste Tabelle Adresse haben Namen, Straße, Stadt Spalten und die zweite Tabelle haben compName, compType.

class Company extends Model 
{ 
    protected $table = "Company"; 
    protected $primaryKey = 'Adresse'; 
    public $timestamps = false; 

    public function addresses() 
    { 
     return $this->belongsTo(Addresses::class, 'adress'); 
    } 

} 

dies sind die beiden Modelle. Der Controller sieht wie folgt aus:

class AddressesController extends Controller 
{ 
    public function index(Request $request) 
    { 
     $searchTerm = $request->input('searchTerm'); 

     $addresses = Addresses::whereHas('compan', function($query) { 
      $query->where('compType','D'); 
     })->orderBy('Name') 
     ->searchAddress($searchTerm) 
     ->paginate(60); 
     return view('asdress.index', compact('addresses', 'searchTerm')); 
    } 
} 

i nach den ersten Tabellenspalten suchen (Stadt, Name, Straße). aber wie kann ich nach den zweiten Tabellenspalten wie dem compName suchen.

Antwort

1

Fügen Sie einfach orWhere für jedes Unternehmen Tabellenfeld, das Sie in whereHas Schließung suchen möchten.

$searchTerm = $request->input('searchTerm'); 

$addresses = Addresses::whereHas('company', function($query) use($searchTerm){ 
    $query->where('compType','D') 

    //append other where queries on company fields 
    ->orWhere('company_table_field_name', $searchTerm); 
}); 
+0

Hallo, Sie haben die Verwendung ($ searchTerm) nach der Funktion vergessen, aber das funktioniert auch nicht. –

+0

@GregOstry Danke, dass du darauf hingewiesen hast ... mein Schlechter ... habe meine Antwort bearbeitet –