2014-11-20 70 views
2

我正在使用Laravel,并且我有一个项目表和一个用户表。每个项目可以有多个用户。我已经建立了一个project_user数据透视表。Laravel刀片多选。如何选择数据透视表中的记录?

我正在尝试创建一个多选框,列出所有用户,并且已将用户分配给所选项目。这是我创建视图的ProjectsController函数。

public function edit($id) 
{ 
    $project = Project::findOrFail($id); 
    $users = User::lists('name','id'); 
    return View::make('projects.edit', compact('project','users')); 
} 

而且这里是有关刀片形式:

{{ Form::select('user_id[]', $users, ??? , array('multiple')) }} 

在哪里,我认为???应该是与该项目关联的user_id数组。我可以从

$project->user...something here? 

或者,我需要在函数edit()中创建数组?

回答

2

你快到了。首先确保你在你的项目模型中定义的正确关系

public function users(){ 
    return $this->belongsToMany('User'); 
} 

我们得到所有分配的用户的ID:

$assignedUserIds = $project->users()->lists('id'); 

而只是传递给视图...

+0

我用'$ project-> users() - > lists('user_id')替换了'???'并且它正在工作。谢谢! – skihansen 2014-11-20 21:41:32

+0

当然你也可以直接在视图中做:) – lukasgeiter 2014-11-20 21:42:51

0

接受的答案是正确的,除了在Laravel 5.2我不得不这样做- >指定者()

$assignedUserIds = $project->users()->lists('id')->toArray(); 

以使其与Form :: select一起使用。

我会评论原来的答案,但我没有足够的声誉。

相关问题