2014-06-09 10 views
6

Ich versuche Eloquent zu verwenden, um ein bestimmtes Produkt zu erhalten, das eine brand_id-Spalte hat, die auf eine brands-Tabelle abbildet, die brand-Array wird leer zurückkommen.Laravel Eloquent mit() -> null zurück

Gibt es hier etwas, das offensichtlich geändert werden muss?

$product = Product::with('images')->with('brand')->select($fields)->where('display', '=', 1)->find($id); 

// Produktmodell

class Product extends Eloquent { 
    ... 
    public function brand() 
    { 
     return $this->belongsTo('Brand'); 
    } 

// Marke Modell

class Brand extends Eloquent { 
... 
public function products() 
{ 
    return $this->hasMany('Product'); 
} 
+0

haben Sie es überprüft mit: $ brand = $ product-> brand(); ? – num8er

+0

Welche Felder befinden sich in der Variablen '$ fields'? –

Antwort

9

Sie haben dieses:

$product = Product::with('images', 'brand') 
        ->select($fields) 
        ->where('display', 1) 
        ->find($id); 

Du null für brand bekommen und es könnte sein, weil Sie haben einige spezielle Felder und wahrscheinlich haben Sie nicht die foreing_key aus der products Tabelle auswählen, die die Beziehung mit Brand schafft, also, wenn Ihr products Tabelle die foreign_key (wahrscheinlich brand_id) von brand Tabelle enthält dann müssen Sie diese foreign_key aus der Auswahl products Tisch auch. Fügen Sie also einfach foreign_key/brand_id in die Variable $fields hinzu. Ohne den Relation Builder Key (FK) wird Brand nicht geladen.

+1

Genie. Danke, du warst genau bei $ Feldern. – Jazzy

+0

Danke und willkommen :-) –