2014-11-06 14 views
13

Sono appena iniziato con Laravel quindi per favore perdona qualsiasi noobness.Laravel appartienePer restituire null quando si utilizza 'con'

Ho un modello User e Order, un utente ha molti ordini:

# 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'); 
} 

Quindi credo di avere il alto a destra.

Ma quando faccio questo:

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

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

Tuttavia, se lo faccio il contrario, funziona benissimo:

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

Che cosa sto facendo di sbagliato/quello che non ho capito ?! O il mio problema è più grande di quello che penso?

Database:

enter image description here

risposta

45

Il problema è che non si dispone di return per il vostro rapporto orders. Dovrebbe essere:

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

Si dovrebbe anche usare il vostro caso i rapporti sensibili. hai mostrato:

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

sta lavorando, ma si dovrebbe invece usare

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

per evitare le query in più al vostro database in futuro

+1

Grazie per le informazioni aggiuntive oltre – Djave

+0

TNX Marcin Nabialek –

+0

Grazie a @Marcin. Salvato un giorno –

Problemi correlati