如何在Eloquent数据透视表上设置额外字段的值

Axl*_*ith 6 laravel eloquent laravel-4

$ recourse-> pivot-> field ='value';

给出错误:间接修改重载属性

Jar*_*zyk 15

pivot 仅在关系的上下文中可用:

// won't work
$model = Model::first();
$model->pivot; // null

// will work
$anotherModel = AnotherModel::first();
$relatedModel = $anotherModel->relation()->first();
$relatedModel->pivot; // Pivot object
Run Code Online (Sandbox Code Playgroud)

但是对于你想要做的事情,只需在save方法中使用额外的参数:

$product = Product::find($item->id);
$order->product()->save($product, ['price' => 12.34]);
Run Code Online (Sandbox Code Playgroud)

对于现有关系:

$product = $order->product()->find($productId);
$product->pivot->price = 12.34;
$product->pivot->save();

// or
$order->product()->updateExistingPivot($productId, ['price'=>12.34]);
Run Code Online (Sandbox Code Playgroud)

我建议你使用products这种关系,以便更容易阅读.