laravelでは、ピボットテーブルからローを更新しようとしています。Laravelピボットテーブルの更新
Invoice.php
class Invoice extends Model
{
public function items() {
return $this->belongsToMany('App\Item', 'invoice_items', 'invoice_id', 'item_id')->withPivot('quantity');
}
Item.php
class Item extends Model
{
public function invoices() {
return $this->belongsToMany('App\Invoice' ,'invoice_items', 'item_id', 'invoice_id')->orderBy('created_at', 'desc')->withPivot('quantity');
}
}
InvoiceItem.php
class InvoiceItem extends Pivot
{
protected $fillable = [
'quantity',
];
public function __construct(Model $parent, array $attributes,
$table, $exists = false)
{
parent::__construct($parent, $attributes, $table, $exists);
}
}
:私はこの関係を持っています
とInvoicesController.phpで、私は方法の更新があります。
public function update(Request $request, $id)
{
$invoice = Invoice::findOrFail($id);
$invoice->update([
'number' => $request->number,
'status' => $request->status,
'place_issue' => $request->place_issue,
'date_issue' => $request->date_issue,
'date_payment' => $request->date_payment,
'description' => $request->description,
'company_id' => $request->company_id,
'user_id' => $request->user_id,
]);
Invoice::find($id)->items()->updateExistingPivot($request->quantity, ['quantity' => $request->quantity]);
return redirect('listInvoice');
}
を、私は、フィールド「量」を更新しようとするたびに古い値です。私は間違って何をしていますか?
updateExistingPivotは、最初の引数としてidをとります。数量を渡しています。 – Devon
最初の引数は更新する値ではなく、 'belongsToMany'内の他のモデルの識別子ですので、ピボットテーブルを更新するピボットを知ることができます。[ラベラードキュメント - ピボットテーブルのレコードの更新](https:// laravel .com/docs/5.5/eloquent-relationships#update-many-to-many-relationships) – lagbox
しかし、私は2つの外部キーと追加の列 "quantity"を持つピボットを持っているので、updateExistingPivotメソッドのパラメータは何か好き? ありがとうございます; – Magda