Php &引用;SQLSTATE[HY000]:一般错误:1364字段';用户id';不';没有默认值(SQL:insert into
我在使用laravel时遇到此错误。我正在尝试保存书籍数据,并使用用户id保存其所有者用户。对于问题格式,我感到抱歉Php &引用;SQLSTATE[HY000]:一般错误:1364字段';用户id';不';没有默认值(SQL:insert into,php,mysql,laravel,Php,Mysql,Laravel,我在使用laravel时遇到此错误。我正在尝试保存书籍数据,并使用用户id保存其所有者用户。对于问题格式,我感到抱歉 public function store(InfoValid $request) { $request->validated(); $user = Auth::user()->books()->create($request->except('_token')); //dd($user ->user_id); Boo
public function store(InfoValid $request)
{
$request->validated();
$user = Auth::user()->books()->create($request->except('_token'));
//dd($user ->user_id);
Book::create($request->except('_token'));
redirect("/books");
}
}
“SQLSTATE[HY000]:一般错误:1364字段“用户id”没有默认值(SQL:插入书籍(名称
,页面
,ISBN
,价格
,发布时间
,更新时间
,创建时间
)值))◀"
在我的用户类中,我有:
public function books(){
return $this->hasMany(Book::class);
}
在我的书本课上:
protected $fillable = [
"name" , "page" , "ISBN" , "price" , "published_at"
];
public function user()
{
return $this ->belongsTo(User::class);
}
在我的书桌上:
$table->unsignedInteger("user_id");
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade')
->onUpdate('cascade');
当我dd()用户id(我已经评论过)时,它会给我用户id,但我不知道为什么我会遇到这个错误
Auth::user()->books()->create($request->except('_token'));
将在手册
实体中自动设置用户id
但是这里
Book::create($request->except('_token'));
不会设置user\u id
。因此,laravel将尝试在没有user\u id
(这是必需的)的情况下插入书籍,MySQL会抱怨。但您也不需要第二行,因为书籍已与第一行一起保存。您在插入时是否为user\u id
指定了值(答案是否)?您的表中是否存在user\u id
字段(答案为是)?如果在insert中未指定用户id
的值,该值应该是什么?默认值。创建表时未指定该值。那么,为什么会出现该错误?我给出了所有线索,错误消息也会告诉您原因。默认值应该是什么?我将其定义为可为null,但每次保存book实际上保存了两本书(一本为null,另一本为fo user_id)。为什么有这行book::create($request->except(“_token”);
?您可能应该删除它。您已经用books()->create(…)保存了它
。噢!谢谢。我删除了它,它可以正常工作。我是laravel和php的新手。我在另一个项目的视频中看到了,但没有注意到!