Php 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">

我正在与Laravel 8建立一个论坛,在这个论坛中,为了发布问题的答案,我制作了以下表格:

<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();
}