在laravel中传递多对多关系中的数据

时间:2016-01-26 04:45:33

标签: php laravel laravel-5.1

我创建了一个表单,向用户显示事件标题,事件描述。和代码

public function show($id){

            $showevents = Events::findOrFail($id);
            return view('events.show',compact('showevents'));
    }

我传递的这些数据没有用户数据,但它会给我特定的事件数据。我的问题是如何传递用户数据? 因为我的事件表没有用户信息,所以它都在用户表中。 我在视图表单中尝试了{{$ showevents-> user-> name}},但它并没有向我提供用户的信息。

3 个答案:

答案 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