我正在使用 Laravel 進行 CRUD 操作,并在我的“創建”表單“昵稱”中添加了一個新輸入,但出現此錯誤:SQLSTATE [HY000]:一般錯誤:1364 欄位“昵稱”沒有默認值
INSERT INTO
`students` (
`name`,
`email`,
`phone`,
`password`,
`updated_at`,
`created_at`
)
VALUES
(
test,
[email protected],
99999999,
testpassword,
2022 -11 -21 13: 20: 47,
2022 -11 -21 13: 20: 47
)
這是我的模型檔案:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
use HasFactory;
protected $fillable = ['name','nickname','email','phone','password'];
}
這是我的控制器檔案:
use Illuminate\Http\Request;
use App\Models\Student;
class StudentController extends Controller
{
/**
* Display a listing of the resource.
*
// * @return \Illuminate\Http\Response
*/
public function index()
{
$student = Student::all();
return view('index', compact('student'));
}
/**
* Show the form for creating a new resource.
*
// * @return \Illuminate\Http\Response
*/
public function create()
{
return view('create');
}
/**
* Store a newly created resource in storage.
*
// * @param \Illuminate\Http\Request $request
// * @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$storeData = $request->validate([
'name' => 'required|max:255',
'name' => 'required|max:255',
'email' => 'required|max:255',
'phone' => 'required|numeric',
'password' => 'required|max:255',
]);
$student = Student::create($storeData);
return redirect('/students')->with('completed', 'Student has been saved!');
}
/**
* Display the specified resource.
*
// * @param int $id
// * @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
// * @param int $id
// * @return \Illuminate\Http\Response
*/
public function edit($id)
{
$student = Student::findOrFail($id);
return view('edit', compact('student'));
}
/**
* Update the specified resource in storage.
*
// * @param \Illuminate\Http\Request $request
// * @param int $id
// * @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$updateData = $request->validate([
'name' => 'required|max:255',
'nickname' => 'required|max:255',
'email' => 'required|max:255',
'phone' => 'required|numeric',
'password' => 'required|max:255',
]);
Student::whereId($id)->update($updateData);
return redirect('/students')->with('completed', 'Student has been updated');
}
/**
* Remove the specified resource from storage.
*
// * @param int $id
// * @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$student = Student::findOrFail($id);
$student->delete();
return redirect('/students')->with('completed', 'Student has been deleted');
}
}
當我洗掉昵稱中的必需選項時,它可以作業,但我必須這樣做。
uj5u.com熱心網友回復:
解決 1 ::
該nickname列似乎未設定為可為空的列。改變nickname將表中的列
解決 2 ::
或者簡單地你可以將它的默認值設定為nickname列上設定它的默認值。
解決 3 ::
您可以在創建的 SQL 查詢中添加nickname列。
INSERT INTO
`students` (
`name`,
`nickname`,
`email`,
`phone`,
`password`,
`updated_at`,
`created_at`
)
VALUES
(
test,
nickname
[email protected],
99999999,
testpassword,
2022 -11 -21 13: 20: 47,
2022 -11 -21 13: 20: 47
)
uj5u.com熱心網友回復:
添加到 xlab 的解決方案中,您還可以禁用 STRICT_TRANS_TABLES。當您已經撰寫了代碼并且您可以“允許”不使用嚴格輸入(如果您理解其中的含義)時,這尤其有用。
在此處檢查接受的解決方案:
如何在本地主機(xampp)中打開/關閉 MySQL 嚴格模式?
uj5u.com熱心網友回復:
您似乎沒有將資料庫中昵稱的默認值設定為 Null。如果您沒有傳遞任何值,那么它必須要求在資料庫中的任一代碼中設定默認值。
uj5u.com熱心網友回復:
其實我打錯了:
錯誤的:
public function store(Request $request)
{
$storeData = $request->validate([
'name' => 'required|max:255',
'name' => 'required|max:255',
'email' => 'required|max:255',
'phone' => 'required|numeric',
'password' => 'required|max:255',
]);
真的:
public function store(Request $request)
{
$storeData = $request->validate([
'name' => 'required|max:255',
'**nickname**' => 'required|max:255',
'email' => 'required|max:255',
'phone' => 'required|numeric',
'password' => 'required|max:255',
]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/537875.html
標籤:PHPlaravel-9
