2014-11-06 174 views
13

我剛剛開始使用Laravel,請原諒任何noobness。Laravel belongsTo使用'with'時返回null

我有一個UserOrder模型,用戶有很多訂單:

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

所以我想我有上述權利。

但是當我這樣做:

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

我得到Call to a member function addEagerConstraints() on null

但是,如果我周圍做它的其他方式,它的偉大工程:

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

我在做什麼錯誤/什麼不我明白?還是我的問題比我想象的要大?

數據庫:

enter image description here

回答

45

的問題是你沒有returnorders關係。它應該是:

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

您還應該使用您的關係區分大小寫。你表明:

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

工作,但你應該寧願使用

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

,以避免額外查詢到你的數據庫的未來

+1

謝謝你的其他信息,以及 – Djave 2014-11-06 12:03:54

+0

TNX馬爾欽Nabialek – 2015-11-19 12:13:51

+0

謝謝@Marcin。保存了一天 – 2017-03-14 09:33:53