如何传递多对多关系以查看数组[Laravel 5]

How to pass many to many relations to view as array[Laravel 5]

我尝试通过数组来查看我的关系....我有用户和项目 table 实际....

这是用户模型:

public function projects(){
    return $this ->belongsToMany('App\Project','project_user');
}


public function getUserList(){
    return $this -> projects;
}

这是我的家庭控制器:

public function project(User $project){
            $this -> selected = $project;
            return view('projects',array('selected' =>$project -> selected -> getUserList()->lists('id') ));
        }

注意

如果我更换家庭控制器,这一行:

return view('projects',array('selected' => $project -> selected -> getUserList()->lists('id') ));

进入这个:

return view('projects',array('selected' => Auth::user -> getUserList()->lists('id') ));

它工作正常...

有人知道为什么它现在可以使用方法注入吗?

简短回答:Laravel 不知道在您对 User 模型进行类型提示时该怎么做。

更长的答案:由于当前登录用户的信息存储在 Laravel 代码的身份验证部分,一种选择是类型提示 Illuminate\Contracts\Auth\Guard 接口(API docs) 在你的方法描述符中获取它的一个实例。

然后您可以使用 user 属性 访问反映当前登录用户的用户模型实例。这段代码基本上就是您在此处已有的代码:Auth::user -> getUserList()->lists('id').

Illuminate\Contracts 内部使用 Guard 接口的好处是,如果包或服务提供商重新定义 Guard 接口的具体实现(这样做的原因是换出 如何 身份验证在您的应用程序中工作),您的代码将不需要更改,因为它绑定到该接口定义的合同,而不是使用 Auth 门面它可能不再以相同的方式运行。

希望对您有所帮助!欢迎提问:)