negar_a 1 گزارش دادن ارسال شده در مرداد 99 با سلام . من یک جدول order و یک product دارم . چون روابط این دو جدول many to many هست بین این دو روابط مورد نیاز و جدول pivot رو ایجاد کرد . order_product دارای این فیلدها هست . id , order_id,product_id , quantity وقتی کد مربوط به درج در pivot رو مینویسم این خطا رو میده SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: insert into `order_product` (`0`, `order_id`, `product_id`) values (2, 10, 1)) این هم کد من . $order = Order::create($orderData); $order->products()->attach($productID,$quantity); $productID و $quantity ارایه ای هستند که مقادیر لازم رو دارند . نقل قول Share this post Link to post Share on other sites
Amir_Kh1984 17 گزارش دادن ارسال شده در مرداد 99 سلام ابتدا وارد مدل 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 استفاده کنید. امیدوارم که این پاسخ به شما کمک کرده باشد. 1 نقل قول Share this post Link to post Share on other sites
negar_a 1 گزارش دادن ارسال شده در مرداد 99 خیلیی ممنونم . نتیجه داد . داکیومنت ها رو نگاه کرده بودم ظاهرا اینها رو نگفته بود . نقل قول Share this post Link to post Share on other sites