2016-04-16 1 views
0

Ich bin in der Lage, in einigen Spalten meiner Modelleinheit zu suchen.Eloquente Abfrage auf Spalten der Eltern in Laravel

$units = Unit::where('name', 'LIKE', '%' . $query . '%')   
      ->orWhere('address', 'LIKE', '%' . $query . '%')->paginate(15); 

Einheit gehört zu einem Modell mit dem Namen der Immobilie:

public function property() 
    { 
     return $this->belongsTo('App\Property'); 
    } 

Wie konnte ich in den Attributen der Immobilie zu suchen?

Ich habe versucht:

$units = Unit::where('name', 'LIKE', '%' . $query . '%')   
      ->orWhere('address', 'LIKE', '%' . $query . '%')->paginate(15); 
      ->orWhere('property.name', 'LIKE', '%' . $query . '%')->paginate(15); 

aber ich bekomme folgende Fehlermeldung:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'property.name' in 'where clause' 

Antwort

1

Try this: Ich gehe davon aus, dass Ihre Tabellen sind: units und properties und ihre Primärschlüssel sind beide id und ausländische Schlüssel in Einheiten ist: property_id

$units = Unit::select('units.*') 
     ->where('units.name', 'LIKE', '%' . $query . '%')   
     ->orWhere('units.address', 'LIKE', '%' . $query . '%') 
     ->join('properties','properties.id','=','units.property_id') 
     ->orWhere('properties.name', 'LIKE', '%' . $query . '%')->paginate(15); 
+0

das scheint zu funktionieren, danke! aber ich will nur die Einheitsspalten in der Variablen $ units (sonst habe ich zu viele doppelte Spaltennamen) Haben Sie eine Lösung dafür? – user3253002

+1

Ich habe es bearbeitet, bitte überprüfen Sie es Vergessen Sie nicht, meine Antwort hilfreich zu machen :)) – BKF