我创建了一个表单,向用户显示事件标题,事件描述。和代码
public function show($id){
$showevents = Events::findOrFail($id);
return view('events.show',compact('showevents'));
}
我传递的这些数据没有用户数据,但它会给我特定的事件数据。我的问题是如何传递用户数据? 因为我的事件表没有用户信息,所以它都在用户表中。 我在视图表单中尝试了{{$ showevents-> user-> name}},但它并没有向我提供用户的信息。
答案 0 :(得分:1)
如果您想要检索有关用户的信息并将其发送到视图文件,您还需要用户ID 。
您可以在任何地方获取用户ID的一件事是在用户登录时在Session变量中设置user-id:
\Session::set('user_id',$userID);
然后,您可以使用
在任何控制器中的任何位置获取用户ID$id = \Session::get('user_id');
例如在您的情况下
public function show($id){
$user_id = \Session::get('user_id');
$user = User::findOrFail($user_id);
$showevents = Events::findOrFail($id);
return view('events.show',compact('showevents','user));
}
现在你将设置Session变量完全取决于你的代码..我习惯在用户成功登录后设置,并在登出时重新登记以删除会话数据..
\Session::flush();
答案 1 :(得分:0)
首先,{{$showevents->user->name}}
当然会失败,因为事件和用户之间没有任何联系。
如果你想在它之间建立连接,你需要在事件表中使用user_id
。
如果您想获取用户数据但没有任何连接,则需要进行单独查询。
$user = User::findOrFail($user_id);
return view('events.show',compact('showevents', 'user'));
答案 2 :(得分:0)
你应该使用Eloquent的关系函数或将它们包装在你的模型关系函数中并使用它们。 检查Laravel documentation