2014-11-06 7 views
13

Ich fange gerade mit Laravel an, also verzeih bitte jedem Noobness.Laravel gehört zu Null bei Verwendung von 'mit'

ich ein User und Order Modell haben, hat ein Anwender viele Aufträge:

# Inside User model 
public function orders(){ 
    $this->hasMany('Order'); 
} 

# Inside Order 
public function user(){ 
    return $this->belongsTo('User'); 
} 

// Not sure if this is upsetting anything (also in Order) 
public function products(){ 
    return $this->belongsToMany('Product'); 
} 

Also ich denke, ich das oben rechts haben.

Aber wenn ich dies tun:

$users = User::with('orders')->find(1); 
return $users; 

ich Call to a member function addEagerConstraints() on null.

Allerdings, wenn ich es anders herum tun, es funktioniert super:

$orders = Order::with('User')->get(); 
return $orders; 

Was mache ich falsch/was ich nicht verstehen ?! Oder ist mein Problem größer als ich denke?

Datenbank:

enter image description here

Antwort

45

Das Problem ist, dass Sie nicht return für Ihre orders Beziehung haben. Es sollte sein:

public function orders(){ 
    return $this->hasMany('Order'); 
} 

Sie sollten auch Ihre Beziehungen Groß-und Kleinschreibung beachten. Sie zeigte:

$orders = Order::with('User')->get(); 

arbeitet, aber Sie eher

$orders = Order::with('user')->get(); 

zu vermeiden, zusätzliche Abfragen in Ihrer Datenbank in Zukunft

+1

Sie für die Zusatzinfos Vielen als auch – Djave

+0

tnx Marcin Nabialek verwenden sollten –

+0

Danke @Marcin. Gespeichert einen Tag –

Verwandte Themen