繁体   English   中英

Laravel当使用'with'时返回null

[英]Laravel belongsTo returning null when using 'with'

我刚开始使用Laravel,所以请原谅。

我有一个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收到Call to a member function addEagerConstraints() on null

但是,如果我反过来这样做,则效果很好:

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

我做错了/我不明白什么? 还是我的问题超出了我的想象?

数据库:

在此处输入图片说明

问题是您没有orders关系return 它应该是:

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

您还应该使用区分大小写的关系。 您显示了:

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

正在工作,但您应该使用

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

避免将来对数据库进行额外查询

对于遇到此问题的其他人,我也遇到了同样的问题,但是我的问题是交换了外键/本地键。 例:

// This is correct for hasX relationships
public function user() {
    return $this->hasOne('App\Models\User', 'user_id', 'local_key_user_id');
}

// This is correct for belongsTo relationships
public function user() {
    return $this->belongsTo('App\Models\User', 'local_key_user_id', 'user_id');
}

请注意,对于hasX关系,外键是第二个参数,本地键是第三个参数。 但是,对于belongsTo关系,将这两个交换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM