簡體   English   中英

如何將新列數據保存到 laravel pivot 表中?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM