簡體   English   中英

將數據插入具有樞軸錯誤laravel 5.6的樞軸表中

[英]inserting data into pivot table with pivot error laravel 5.6

我正在使用belongstomany關系和數據透視表,可以輕松保存產品,但是當我要保存產品數量時,返回錯誤,這是我的代碼模型發票:

class Invoice extends Model
{
    public function products()
    {
        return $this->belongsToMany('App\Product', 'invoice_product', 'invoice_id')
            ->withPivot('product_quantity')
            ->as('invoice_products_pivot');

    }
}

和我的發票控制器創建部分:

public function store(Request $request)
{
    //Validate
    $request->validate([
        'title' => 'required|min:3',
        'description' => 'required',
    ]);

    $invoices = Invoice::create([
        'title' => $request->title,
        'description' => $request->description,
        'client_id' => $request->client_id,

    ]);
    $product_id1 = $request->input('product_id1');
    $product_id2 = $request->has('product_id2');
    $product_id3 = $request->has('product_id3');
    $product_id4 = $request->has('product_id4');
    $product_id5 = $request->has('product_id5');
    $invoices->products()->attach($product_id1);
    $invoices->products()->attach($product_id2);
    $invoices->products()->attach($product_id3);
    $invoices->products()->attach($product_id4);
    $invoices->products()->attach($product_id5);
    return redirect('admin/invoices/' . $invoices->id);
}

這是對不起的看法

        <form method="post" action="{{url('admin/invoices')}}">
                {{csrf_field()}}
                <div class="form-group"> <!-- Street 1 -->
                    <label for="title" class="control-label">نام</label>
                    <input type="text" class="form-control" id="title" name="title"
                           placeholder="Street address, P.O. box, company name, c/o">
                </div>

                <div class="form-group">
                    <label>انتخاب محصول</label>
                    <select class="select-menu2-color select2-hidden-accessible" name="product_id1"
                            tabindex="-1"
                            aria-hidden="true">

                        @foreach($produts as $product)
                            <option value="{{$product->id}}">{{$product->name}}</option>
                        @endforeach
                    </select>
                    <div class="form-group"> <!-- Street 1 -->
                        <label for="title" class="control-label">تعداد</label>
                        <input type="text" class="form-control" id="title" name="product_qa1"
                               placeholder="Street address, P.O. box, company name, c/o">
                    </div>
                    <label>انتخاب محصول</label>
                    <select  class="select-menu2-color select2-hidden-accessible" name="product_id2"
                            tabindex="-1"
                            aria-hidden="true">
                        <option value="">لطفا یک محصول انتخاب کنید</option>
                        @foreach($produts as $product)

                            <option value="{{$product->id}}">{{$product->name}}</option>
                        @endforeach
                    </select>
                    <label>انتخاب محصول</label>
                    <select class="select-menu2-color select2-hidden-accessible" name="product_id3"
                            tabindex="-1"
                            aria-hidden="true">
                        <option value="">لطفا یک محصول انتخاب کنید</option>
                        @foreach($produts as $product)
                            <option value="{{$product->id}}">{{$product->name}}</option>
                        @endforeach
                    </select>
                    <label>product1</label>
                    <select class="select-menu2-color select2-hidden-accessible" name="product_id4"
                            tabindex="-1"
                            aria-hidden="true">
                        <option value="">لطفا یک محصول انتخاب کنید</option>
                        @foreach($produts as $product)
                            <option value="{{$product->id}}">{{$product->name}}</option>
                        @endforeach
                    </select>
                    <label>انتخاب محصول</label>
                    <select  class="select-menu2-color select2-hidden-accessible" name="product_id5"
                            tabindex="-1"
                            aria-hidden="true">
                        <option value="">لطفا یک محصول انتخاب کنید</option>
                        @foreach($produts as $product)
                            <option value="{{$product->id}}">{{$product->name}}</option>
                        @endforeach
                    </select>

                </div>
                <div class="form-group">
                    <label class="display-block">انتخاب مشتری</label>
                    <select class="select-custom-colors select2-hidden-accessible" name="client_id" tabindex="-1"
                            aria-hidden="true">
                        @foreach($clients as $client)
                            <option value="{{$client->id}}">{{$client->title}}</option>
                        @endforeach
                    </select>


                </div>
                <div class="form-group"> <!-- Full Name -->
                    <label for="description" class="control-label">توضیحات</label>
                    <input type="text" class="form-control" id="description" name="description"
                           placeholder="John Deer">
                </div>
                <button type="submit" class="btn btn-primary btn-raised legitRipple">ارسال</button>
            </form>

我在遷移invoice_product表時有invoice_id&product_id&product_quantity,這是我要保存表單時遇到的錯誤:

字段'product_quantity'沒有默認值(SQL:插入invoice_productinvoice_idproduct_id )值( invoice_id ))

我相信您的product_quantity字段必須為可為空或具有默認值。我會說在您的表定義中product_quantity看起來像是以下兩者之一:

$table->integer('product_quantity')->nullable(); $table->integer('product_quantity')->default(0);

最好在類似恕我直言的問題中共享表定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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