2015-03-18 119 views
3

我尝试通过数组来查看我的关系....我在realation用户和项目表....如何通过多对多的关系,以查看阵列[Laravel 5]

这里用户模型:

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'))); 

它工作正常...

谁知道为什么现在有方法注入工作?

+0

首先,为什么在“ - >”之间使用空格?这让我非常恼火,为什么一个名为$ project的用户对象?我不明白你的代码,但你是否想要获得与用户关联的所有项目?或者,也许一个项目的所有用户?如果是,有一种更清晰的方式来使用口才,我可以告诉你。 – hfingler 2015-03-19 04:45:14

回答

0

简短回答:Laravel不知道在键入提示用户模型时该怎么做。

再回应:由于登录的用户的信息目前被存储在Laravel代码验证部分,一个选择是TYPE-暗示在你的方法描述符Illuminate\Contracts\Auth\Guard接口(API docs)来获取它的一个实例。

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

使用的Illuminate\Contracts内的Guard接口的好处是,如果一个包或服务供应商重新定义了具体落实的Guard接口(这样做会被交换出去验证您的应用程序是如何工作的原因),您的代码将不会因为与该界面定义的合同绑定而需要更改,而不是使用可能不再以相同方式运行的外观Auth

希望这会有所帮助!随意提问:)