[英]SQL ERROR When trying to add related product Integrity constraint violation:
[英]Laravel - Integrity constraint violation when trying to create a product
我正在嘗試在數據庫中創建產品,但我只是收到錯誤消息--SQLSTATE[23000]:完整性約束違規:1048 列'product_type_id'不能是 null(SQL:插入products
( product_type_id
, product_name
, fname
, 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.