使用Eloquent将订单附加到用户模型


Attaching Order to User model using Eloquent

所以我有两个模型,一个User和一个Order(一个用户有多个Order)

在我的模型中,关系设置如下:

用户模型

public function orders()
{
    return $this->hasMany('App'Order');
}
<<p> 订单模型/strong>
public function user()
{
    return $this->belongsTo('App'User');
}

我使用以下代码将当前登录的用户附加到订单。

Auth::user()->orders()->attach($order_id);

我相信这是正确的,但我得到这个错误时,执行代码:

调用未定义方法Illuminate'Database'Query'Builder::attach()

有人能解释一下我做错了什么吗?

attach方法用于多对多关系。要将订单与场景中的用户关联起来,您应该能够通过以下方式保存订单模型:

$order = App'Order::findOrFail($order_id);
Auth::user()->orders()->save($order);

我认为您必须使用associate()方法而不是attach(),因为您正在更新belongsTo关系。

试试这个:

$order = App'Order::findOrFail($order_id);
$user->orders()->associate($order);
$user->save();