簡體   English   中英

Laravel - 嘗試創建產品時違反完整性約束

[英]Laravel - Integrity constraint violation when trying to create a product

我正在嘗試在數據庫中創建產品,但我只是收到錯誤消息--SQLSTATE[23000]:完整性約束違規:1048 列'product_type_id'不能是 null(SQL:插入productsproduct_type_idproduct_namefname , sname , price , pages , updated_at , created_at ) 值 (?, test, test, test, 15, 15, 2020-12-05 22:25:41, 2020-12-05 22:25:41)) -

我試過改變 controller 所以它會是這樣的

 $input = $request->all();

並且還嘗試更改發布方法但沒有成功。

Controller -

public function store(Request $request)
    {    
        $product = new Product();
        $product->product_type_id = request('producttype');
        $product->product_name = request('title');
        $product->fname = request('fname');
        $product->sname = request('sname');
        $product->price = request('price');
        $product->pages = request('pages');
        
       $product->save();
       return redirect('/product');
    }

模板-create.blade.php

<div class="grid-item">
     <form method="POST" action="{{ url('/product/create') }}">
     @csrf
    <h1>Create a product</h1>
    <select id="producttype" value="producttype" name="Product">
      <option value="1">Book</option>
      <option value="2">CD</option>
      <option value="3">Game</option>
    </select>
    <br />
    <input type="text" id="title" name="title" value="title" placeholder="Title">
    <br />
    <input type="text" id="fname" name="fname" value="fname" placeholder="First Name">
    <br />
    <input type="text" id="sname" name="sname" value="sname" placeholder="Surname / Band">
    <br />
    <input type="text" id="price" name="price" value="price" placeholder="Price">
    <br />
    <input type="text" id="pages" name="pages" value="pages" placeholder="Pages / Playlength / PEGI">
    <br />
    <button type="submit">Add new product</button>
    <form/>
</div>

產品 model

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use HasFactory;
    
        protected $fillable = [
        'product_type_id',
        'product_name',
        'fname',
        'sname',
        'price',
        'pages',
    ];
    
    public function productType()
    {
        return $this->belongsTo('App\Models\ProductType', 'product_type_id');
    }
    
    public function outOfStock() {
        return false;
    }
}

Web路線

Route::post('/product/create', [ProductController::class, 'store']);

對這個問題的任何幫助都會令人驚嘆,因為我已經被這個錯誤困住了幾個小時。

根據您的 Laravel 代碼,您希望在您的請求中看到producttype並將其設置為您的 Product 的product_type_id值。

但是您將其作為 HTML 形式的Product發送。

只需更換

<select id="producttype" value="producttype" name="Product">

和:

<select id="producttype" name="producttype">

:)

暫無
暫無

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

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