[英]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.