首页 文章

Laravel - 如何通过选择的数据透视表获取 Value

提问于
浏览
1

我有3张 table

users: id, full_name

user_projects, user_id, project_id // Pivot table

projects: id, name

在用户表中,我得到 10 user

在项目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');
    }
}

Then when I press Edit, I want to show all 10 user in users table and 3 user who join in project A (user in pivot table) with selected already.

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

以下是我的观点:

<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

    您可以检查您的用户是否已经在当前项目中($ 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>
    

相关问题