Laravel - 如何通过选中的数据透视表获取价值

时间:2017-09-08 07:04:33

标签: php laravel pivot

我有3张桌子

users: id, full_name

user_projects, user_id, project_id // Pivot table

projects: id, name

在用户表格中,我有 10位用户

在项目A中,我希望3个用户执行项目A.

然后我创建了存储项目A的函数

public function store(StoreRequest $request)
{
    $data = $request->all();
    try {
        $project = new Project();
        $attribute = array_only($data, $project->getFillable());
        $project = $project->store($attribute);
        if (!empty($project)) {
            $project->user()->attach($request->user_id); // Insert to pivot table
        }
        return redirect()->route('project.index')->with('flashSuccess', 'Create is successful!.');
    } catch (Exception $ex) {
        Log::error($ex);
        return view('errors.404');
    }
}

然后当我按下编辑时,我想要显示所有10个用户的用户表和3个加入项目A的用户(数据透视表中的用户)已选中。

我可以在视图中选择加入项目A的所有用户,但我可以在users表中显示所有其他用户。

以下是我的观点:

<div class="col-md-4">
   <select id="dates-field2" name="user_id[]" class="multiselect-ui form-control" multiple="multiple">
       @foreach($project->user as $user)
          <option selected="selected" value="{{$user->id}}">{{$user->full_name}}</option>
       @endforeach

    </select>
 </div>

这是我的模特

public function user()
{
    return $this->belongsToMany('App\User', 'user_projects');
}

请帮忙。

1 个答案:

答案 0 :(得分:0)

您可以检查您的用户是否已经在当前项目中 ($ project_id是您当前的项目)

<div class="col-md-4">
   <select id="dates-field2" name="user_id[]" class="multiselect-ui form-control" multiple="multiple">
       @foreach($users as $user)
      <option {{ in_array($project_id, $user->projects->pluck('project_id')->toArray()) ? 'selected' : ''}} value="{{$user->id}}">{{$user->full_name}}</option>
   @endforeach

</select>