【问题标题】:Laravel 5.4 multiple dropdown on belongstomany over two pivotsLaravel 5.4 在两个枢轴上的属于的多个下拉列表
【发布时间】:2018-05-30 18:51:29
【问题描述】:

我正在尝试连接由特定用户角色使用的公司。具有特定角色的用户可以为多家公司“工作”。一家公司可以“雇佣”多个用户。我有 5 个表(用户、角色用户、角色、公司和公司用户)

模型关系:

App\User:

public function roles()
    {
        return $this
            ->belongsToMany('App\Role')
            ->withTimestamps();
    }


    public function companies()
    {
        return $this
            ->belongsToMany('App\Company')
            ->withTimestamps();
    }


App\Role:
    public function users()
    {
        return $this
            ->belongsToMany('App\User')
            ->withTimestamps();
    }


App\Companies:
    public function users()
    {
        return $this->belongsToMany('App\User');  // with user_role ??
    }

公司控制人

public function edit(Request $request, $id) {

$company = Company::findOrFail($id);

$users = User::where('role_id',4)->pluck('username')->all(); // no role_id column
$users = User::pluck('username','id')->all();  // returns all users

return view('companies.edit', compact(['company','users']));
}

public function update(Request $request, $id) {
    /* TODO */
}

编辑视图

{!! Form::select('users[]', $users, null, ['class' => 'form-control', 'multiple' => 'multiple']) !!}

我想将具有特定用户角色的用户分配给这些公司。有没有办法设置关系或范围?

奖金问题 :) 有没有一种简单的方法可以在下拉列表中显示连接值?名字 + 姓氏而不是用户名?

【问题讨论】:

    标签: php laravel-5.4 dropdown has-and-belongs-to-many


    【解决方案1】:

    也许不是最整洁的解决方案,但它似乎工作:)

    型号

    public function scopeOfRole($query, $role) {
        return $query->
        join('role_user', 'role_user.user_id', '=', 'users.id')->
        join('roles', 'roles.id', '=', 'role_user.role_id')->
        select(
            DB::raw('GROUP_CONCAT(users.first_name," ",users.last_name) as username'),
                'users.id')->
        where('roles.name', $role)->
        groupBy('users.id');
    }
    

    控制器

    public function edit(Request $request, $id) {
    
    $company = Company::findOrFail($id);
    $users = User::OfRole('my role')->pluck('username','users.id')->all();
    
    return view('companies.edit', compact(['company','users']));
    }
    

    编辑视图

    {!! Form::select('users[]', $users, $company->users()->pluck('users.id'), ['class' => 'form-control', 'multiple' => 'multiple']) !!}
    

    【讨论】:

      猜你喜欢
      • 2012-09-23
      • 2016-07-08
      • 1970-01-01
      • 2018-11-27
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      相关资源
      最近更新 更多