作为一个项目,我正在构建一个类似于论坛的stackoverflow。我希望在显示单个问题的页面上,用户能够单击发问者的姓名并转发到相应的用户个人资料页面。我可以使用{{ $question->user->name }}
从数据库中获取名称。添加<a href=""></a>
部分时会发生问题!
此外,个人资料页面也可以使用。我可以访问它们,然后URL会显示例如:../profile/1
。
这是web.php文件中的路由:
Route::get('/profile/{user}', 'PageController@profile')->name('profile');
这是PageController的一部分:
public function profile($id)
{
$user = User::with(['questions', 'answers', 'answers.question'])->find($id);
return view('profile')->with('user', $user);
}
这是show.blade“查看”问题页面中的代码,该代码不起作用:
<p>
Submitted by <a href="{{ route('profile', $user->id) }}">{{ $question->user->name }}</a>
</p>
我收到的错误消息是Undefined variable: user
。
这让我感到惊讶,因为在个人资料页面上转发到特定问题可以使用以下刀片代码:
<a href="{{ route('questions.show', $question->id) }}">View Question</a>
web.php文件中的相应路由:
Route::resource('questions', 'QuestionController');
和QuestionController:
public function show($id)
{
$question = Question::findOrFail($id);
return view('questions.show')->with('question', $question);
}
我以为我像在QuestionController中定义了$user
一样在PageController中定义了变量$question
?
答案 0 :(得分:1)
我可以看到您正在使用具有关系的Eloquent模型。如果要显示问题的用户ID,可以使用Question
和User
之间的关系来查找发布用户的ID。
Submitted by <a href="{{ route('profile', $question->user->id) }}">{{ $question->user->name }}</a>
^^^^^^^^^
答案 1 :(得分:-1)
//just change your like this way
public function profile($id)
{
$user = User::with(['questions', 'answers', 'answers.question'])->find($id);
return view('profile',compact('user));
}