我正在使用Laravel,我有一个项目表和一个用户表。每个项目可以有多个用户。我已经设置了一个project_user数据透视表。
我正在尝试创建一个多选框,其中列出了所有用户,并选中了当前分配给该项目的用户。这是我创建视图的项目控制器函数。
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_ids。我可以从中得到它吗
$project->user...something here?
或者,我需要在函数 edit() 中创建数组吗?
你快到了。首先确保在项目模型中定义了正确的关系
public function users(){
return $this->belongsToMany('User');
}
现在要获取所有已分配用户的 ID,请执行以下操作:
$assignedUserIds = $project->users()->lists('id');
只需将其传递给视图...
接受的答案是正确的,除了在 Laravel 5.2 上我不得不做 ->toArray():
$assignedUserIds = $project->users()->lists('id')->toArray();
以使其与表单::选择一起使用。
我会评论原始答案,但我没有足够的声誉。
$assignedUserIds = $project->users()->lists('id');
to
// I used in laravel 5.7
$assignedUserIds = $project->users()->pluck('id');