【发布时间】:2019-08-18 15:43:09
【问题描述】:
我收到以下错误:SQLSTATE[23000]:完整性约束违规:1048 列'user_id'不能为空(SQL:插入answers(body,user_id,question_id,@987654325 @,created_at)
我正在尝试使用 Laravel 向表单提交答案,但出现上述错误。首先,我在答案表中检查了我的架构,并且正确定义了 user_id:
public function up()
{
Schema::create('answers', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedInteger('question_id');
$table->unsignedInteger('user_id');
$table->text('body');
$table->integer('votes_count')->default(0);
$table->timestamps();
});
}
接下来,我将此代码添加到我的 AnswersController.php 以验证代码并在提交答案后重定向:
public function store(Question $question, Request $request)
{
$request->validate([
'body' => 'required'
]);
$question->answers()->create(['body' => $request->body, 'user_id' => \Auth::id()]);
return back()->with('success', "Your answer has been submitted successfully");
}
我将 Answer 类导入到我的 AnswersController.php 中,并将 body 和 user_id 字段设置为 Answer.php 模型中的可填充字段:
protected $fillable = ['body', 'user_id'];
当我单击表单上的提交按钮时,我收到上面显示的 SQL 状态错误。 user_id 是我的数据库答案表中的有效字段。我好像搞不懂。
【问题讨论】:
标签: laravel laravel-5.7