Php Laravel 8:列的数据被截断
我正在与Laravel 8建立一个论坛,在这个论坛中,为了发布问题的答案,我制作了以下表格:Php Laravel 8:列的数据被截断,php,laravel,laravel-8,Php,Laravel,Laravel 8,我正在与Laravel 8建立一个论坛,在这个论坛中,为了发布问题的答案,我制作了以下表格: <form action="{{ route('questions.answers', ['question' => $show->id, 'asker' => $show->user->name]) }}" method="POST" enctype="multipart/form-data">
<form action="{{ route('questions.answers', ['question' => $show->id, 'asker' => $show->user->name]) }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="mb-4">
<textarea name="answer" id="answer" class="form-control BSinaBold" rows="7" placeholder="Write down answer"></textarea
@error('answer')
<div class="text-red-500 mt-2 text-sm">
{{ $message }}
</div>
@enderror
</div>
<br />
<button type="submit" class="btn btn-primary">Send</button>
</form>
最后,这里是postAnswer
方法:
public function postAnswer($id,$name) {
$validate_data = Validator::make(request()->all(),[
'answer' => 'required',
])->validated();
$answer = Answer::create([
'answer' => $validate_data['answer'],
'user_id' => auth()->user()->id,
'question_id' => $id,
]);
$name->notify(new RepliedToThread($id));
return back();
}
因此这里的$id
变量表示问题id,$name
是提问者的用户名
但现在我不知怎么地得到了这个错误:
照亮\数据库\查询异常
SQLSTATE[01000]:警告:第1行“问题id”列的1265数据被截断(SQL:插入到答案(答案,用户id
,问题id
,在更新,在创建)值(等)
那么这里出了什么问题?我如何解决这个问题
如果你知道怎么做,请让我知道,我真的很感激你们的任何想法或建议
提前谢谢
答案
表格结构:
你能试着分开你的路线URL吗?
{question}/{asker}
:
Route::post('questions/{question}/{asker}' , [QuestionController::class, 'postAnswer'])->name('questions.answers');
如果有效,您也可以尝试使用
-
或-
而不是/
使用以下代码:
刀片文件
<form action="{{ route('questions.answers', ['question' => $show->id, 'asker' => $show->user->id]) }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="mb-4">
<textarea name="answer" id="answer" class="form-control BSinaBold" rows="7" placeholder="Write down answer"></textarea>
@error('answer')
<div class="text-red-500 mt-2 text-sm">
{{ $message }}
</div>
@enderror
</div>
</br>
<button type="submit" class="btn btn-primary">Send</button>
</form>
postAnswer
public function postAnswer(Request $request, $question, $asker) {
$validate_data = $request->validate([
'answer' => 'required',
]);
$answer = Answer::create([
'answer' => $request->answer,
'user_id' => auth()->user()->id,
'question_id' => $question,
]);
$asker->notify(new RepliedToThread($question));
return back();
}
希望你能得到答案。你的DB列是什么数据类型?@Aless55我刚刚添加了一张它的图片你已经尝试过了吗?
公共函数postAnswer($request,$id,$name)
。我想你的$request在$id变量中。它可以工作并添加答案,但现在显示错误:调用成员函数notify()在字符串上,我刚刚添加了它,但仍然显示了错误!更新你的postAnswer
,我已经更新了我的答案。它仍然会给出相同的错误,因为他给出了'asker'=>$show->user->name
这是一个字符串,然后通知你应该初始化你的模型,比如model::where('name',$asker)在这种情况下,这是不正确的,因此您需要传递askers id而不是name,并且在控制器内部,您应该使用id初始化您的模型,然后通知@KKKKKK@ibrahim-dogan我也尝试了show->user->id
,但仍然显示相同的错误。我还需要做什么来初始化id?
Route::post('questions/{question}/{asker}', [QuestionController::class, 'postAnswer'])->name('questions.answers');
public function postAnswer(Request $request, $question, $asker) {
$validate_data = $request->validate([
'answer' => 'required',
]);
$answer = Answer::create([
'answer' => $request->answer,
'user_id' => auth()->user()->id,
'question_id' => $question,
]);
$asker->notify(new RepliedToThread($question));
return back();
}