【问题标题】:Laravel blade multiple select. How to select records in the pivot table?Laravel 刀片多选。如何选择数据透视表中的记录?
【发布时间】:2015-01-18 19:43:17
【问题描述】:

我正在使用 Laravel,我有一个项目表和一个用户表。每个项目可以有多个用户。我已经建立了一个 project_user 数据透视表。

我正在尝试创建一个列出所有用户的多选框,并选择当前分配给项目的用户。这是创建视图的 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_ids 数组。我可以从

$project->user...something here?

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

【问题讨论】:

    标签: php laravel multi-select


    【解决方案1】:

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

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

    现在获取所有已分配用户的 ID:

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

    然后将其传递给视图...

    【讨论】:

    • 我用$project->users()->lists('user_id') 替换了???,它正在工作。谢谢!
    • 当然你也可以直接在视图中做:)
    【解决方案2】:

    接受的答案是正确的,除了在 Laravel 5.2 上我必须这样做 ->toArray()

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

    让它与 Form::select 一起工作。

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

    【讨论】:

      【解决方案3】:
      $assignedUserIds = $project->users()->lists('id');
      
      to
      // I used in laravel 5.7
      $assignedUserIds = $project->users()->pluck('id');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多