【发布时间】:2021-06-05 16:34:04
【问题描述】:
我正在使用 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。
但现在的问题是,每当我尝试添加答案时,都会收到此错误:
Illuminate\Database\QueryException SQLSTATE[HY000]:一般错误:
1364 字段“答案”没有默认值
这背后的表格在这里:
<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);
}
用户.php:
public function answers()
{
return $this->hasMany(Answer::class);
}
那么这里出了什么问题,我该如何解决这个问题?
如果您能就此分享您的想法或建议,我将不胜感激......
提前致谢。
【问题讨论】: