簡體   English   中英

Laravel 5.8 SQLSTATE[23000]:違反完整性約束:1048

[英]Laravel 5.8 SQLSTATE[23000]: Integrity constraint violation: 1048

添加 TinyMCE 編輯器而不是我擁有的通用編輯器后,我收到 SQLSTATE[23000]:完整性約束違規錯誤。 在做了一些研究后,我發現我錯過了name標簽。 但是添加它並沒有什么不同。 我在下面添加了我的代碼。

刀片文件

<div class="row" style="padding-top: 15px;">
        <div class="col-lg-10 col-md-10">
            <div class="card card-primary">
                <div class="card-header">
                  <h3 class="card-title">Add Product</h3>
                </div>
                <!-- /.card-header -->
                <!-- form start -->
                <form role="form" action="{{  route('product.store')  }}" method="post" enctype="multipart/form-data">
                  {{ csrf_field() }}
                  <div class="card-body">
                    <div class="form-group">
                      <label for="productName">Product Name</label>
                      <input type="text" class="form-control" id="productName" name="productName" placeholder="Product Name">
                    </div>
                    <div class="form-group">
                      <label for="slug">Slug</label>
                      <input type="text" class="form-control" id="slug" name="slug" placeholder="slug">
                    </div>
                    <div class="form-group">
                      <div class="pull-right">
                        <label for="image">File input</label>
                        <input type="file" name="image" id="image">
                      </div>
                    </div>
                  </div>
                  <div class="row">
                    <div class="col-md-12">
                      <div class="card card-outline card-info">
                        <div class="card-header">
                          <h3 class="card-title">
                            Product Description
                          </h3>
                        </div>
                        <!-- /.card-header -->
                        <div class="card-body pad">
                          <div class="mb-3">
                            <textarea id="basic-conf" class="textarea" name="description" placeholder="Place some text here" style="width: 100%; height: 200px; font-size: 14px; line-height: 18px; border: 1px solid #dddddd; padding: 10px;"></textarea>
                          </div>
                        </div>
                      </div>
                    </div>
                    <!-- /.col-->
                  </div>
                  <!-- /.card-body -->
  
                  <div class="card-footer">
                    <input type="submit" class="btn btn-primary">
                    <a href='{{ route('product.index') }}' class="btn btn-warning">Back</a>
                  </div>
                </form>
              </div>
        </div>
    </div>

controller

public function store(Request $request)
    {
        $this->validate($request, [
            'productName'=>'required',
            'slug'=>'required',
            'image'=>'required',
            'description'=>'required',
        ]);
        $product = new product();

        $product->product_name = $request->productName;
        if ($request->hasFile('image')) {
            $image = $request->file('image');
            $image_name = time() . $image->getClientOriginalName();
            $destinationPath = public_path('/uploads/products');
            $image->move($destinationPath, $image_name);
            $product->image = $image_name;
        }

        $product->slug = $request->slug;
        $product->description = $request->productDescription;
        $product->save();
        return redirect(route('product.index'));
    }

遷移文件

    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('product_name');
            $table->string('slug')->unique();
            $table->text('description');
            $table->string('image');
            $table->timestamps();
        });
    }

您已將文本區域命名為“描述”

 <div class="card-body pad">
    <div class="mb-3">
        <textarea id="basic-conf" class="textarea" name="description" placeholder="Place some text here" style="width: 100%; height: 200px; font-size: 14px; line-height: 18px; border: 1px solid #dddddd; padding: 10px;"></textarea>
    </div>
</div>

您正在嘗試通過 $request object 的鍵“productDescription”獲取價值,這自然會返回 null。

嘗試

public function store(Request $request)
    {
        $this->validate($request, [
            'productName'=>'required',
            'slug'=>'required',
            'image'=>'required',
            'description'=>'required',
        ]);
        $product = new product();

        $product->product_name = $request->productName;
        if ($request->hasFile('image')) {
            $image = $request->file('image');
            $image_name = time() . $image->getClientOriginalName();
            $destinationPath = public_path('/uploads/products');
            $image->move($destinationPath, $image_name);
            $product->image = $image_name;
        }

        $product->slug = $request->slug;
        $product->description = $request->description;   //changed from productDescription to description
        $product->save();
        return redirect(route('product.index'));
    }

暫無
暫無

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

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