Laravel 8:SQLSTATE[HY000]:一般错误:1364 字段"答案"没有默认值



我正在使用Laravel 8开发我的项目,这是一个在线论坛。在这个论坛里,用户基本上可以回答问题。

所以在控制器,我把这个用于张贴答案:

public function PostAnswer($id)
{
$validate_data = Validator::make(request()->all(),[
'answer' => 'required',
])->validated();
$answer = Answer::create([
'answer' => $validate_data['answer'],
'user_id' => auth()->user()->id,
'question_id' => $id,
]);
return back();
}

注意,$id变量是问题id。

但现在的问题是,每当我试图添加一个答案,我得到这个错误:

IlluminateDatabaseQueryException SQLSTATE[HY000]:一般错误:
1364字段'answer'没有默认值

后面的表单在这里:

<form action="{{ route('questions.answers', $show->id) }}" method="POST">
@csrf
<textarea name="answer" id="answer" class="form-control" rows="7"></textarea
@error('answer')
<div class="text-red-500 mt-2 text-sm">
{{ $message }}
</div>
@enderror
<button type="submit" class="btn btn-primary">Submit</button>
</form>

这也是answers的迁移表:

public function up()
{
Schema::create('answers', function (Blueprint $table) {
$table->id();
$table->text('answer');
$table->foreignId('user_id')->constrained()->onDelete('cascade');
$table->foreignId('question_id')->constrained()->onDelete('cascade');
$table->timestamps();
});
}

如果你想看看模型之间的关系,它是:

Question.php:

public function answers()
{
return $this->hasMany(Answer::class);
}

User.php:

public function answers()
{
return $this->hasMany(Answer::class);
}

那么这里出了什么问题,我该如何解决这个问题?

如果你能分享你的想法或建议,我将非常感激。

提前感谢。

在你的答案模型中,确保你有正确的$fillable属性:

class Answer extends Model
{
protected $fillable = ['answer','user_id','question_id'];
....
}

最新更新