سلام
ابتدا وارد مدل Order شده و متد products را بصورت زیر ویرایش کنید:
class Order extends Model
{
public function products()
{
return $this->belongsToMany(Product::class) ->withPivot('quantity');
}
}
سپس متد orders در مدل Product را ویرایش کنید:
class Product extends Model
{
public function orders()
{
return $this->belongsToMany(Order::class)->withPivot('quantity');
}
}
حال برای درج در جدول محور (pivot) بدین صورت عمل کنید:
$order = Order::create($orderData);
$productID = is_array($request->get('productID')) ? $request->get('productID') : [];
$quantityID = is_array($request->get('quantityID')) ? $request->get('quantityID') : [];
$attatchData = array();
foreach ($i = 0; $i < count($productID); $i++)
$attatchData[$productID[$i]] = ['quantity' => $quantityID[$i]];
/*
$productID = [1, 2, 3]
$quantityID = [20, 40, 50]
$attatchData =
[
'1' => [ 'quantity' => 20],
'2' => [ 'quantity' => 40],
'3' => [ 'quantity' => 50],
];
*/
$order->products()->attach($attatchData);
ابتدا باید مقادیر productID و quantityID را در آرایه جدیدی به نام attatchData بدین صورت قرار دهید ؛ یک آرایه انجمنی با کلید های productID و مقادیری بصورت آرایه ( [ quantity' => 20'] ) . با فرض اینکه محصول با شناسه 1 دارای تعداد 20 باشد. ( محصولات با شناسه های 2 و 3 به ترتیب دارای مقادیر 40و 50)
بعد از پر کردن آرایه می توانید از متدهای ()attach و ()sync استفاده کنید.
امیدوارم که این پاسخ به شما کمک کرده باشد.