[英]How can I save a new column data into laravel pivot table?
我有這個 3 表:
站(id,station_name)
產品(id,product_name)
pivot表
product_station (station_id,product_id, tank_volum)
車站 Model
public function products(){
return $this->belongsToMany(Product::class)
->withTimestamps()
->withPivot('tank_volume');
}
產品 Model
public function stations(){
return $this->belongsToMany(Station::class);
}
我正在嘗試創建一個包含許多產品的站點,並且每個產品都有其罐容量,但我無法將罐容量值保存到數據庫中:
product_station 表
這是我的 controller:
public function store(StationsRequest $request)
{
// dd($request);
$input = $request->all();
if($file = $request->file('photo_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('images', $name);
$photo = Photo::create(['file'=>$name]);
$input['photo_id'] = $photo->id;
}
$station = Station::create($input);
$station->products()->sync($request->products , false);
return redirect('/admin/stations');
}
問:如何在 product_station 表“數據透視表”中保存 Tank 容積?
如果你想sync()
相關的額外字段:
$product_ids = [];
foreach ($station->products as $product) {
//collect all inserted record IDs
$product_ids[$product->id] = ['tank_volume' => 'tank_volume_value'];
}
//if you want to pass new id from new query
//$product_ids['new_created_product->id'] = ['tank_volume' => 'tank_volume_value'];
然后
$station->products()->sync($product_ids);
在這種情況下,最好使用 attach():
$station = Station::create(['fields']);
$station->products()->attach([$product->id => ['tank_volume'=>'value']]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.