使用Eloquent

时间:2016-11-16 22:32:43

标签: php laravel eloquent

所以我有两个模型,一个是用户和一个订单(一个用户有很多订单)

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

用户模型

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

订单型号

public function user()
{
    return $this->belongsTo('App\User');
}

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

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

我认为这是正确的但我在执行代码时遇到此错误:

  

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

有人可以解释我做错了吗?

2 个答案:

答案 0 :(得分:0)

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

试试这个:

$order = App\Order::findOrFail($order_id);

$user->orders()->associate($order);

$user->save();

答案 1 :(得分:0)

attach方法适用于many-to-many relationships。要将订单与业务情景中的用户相关联,您应该能够以这种方式保存订单模型:

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