2014-11-06 298 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