Laravel 5.0:数据透视表问题

时间:2016-04-20 07:08:01

标签: php laravel laravel-5 pivot-table

我是Laravel框架的绝对初学者。我遇到了与数据透视表有关的问题。

我想获得一个附有某个ID的集合。

myController的

/**
 * Show the form for creating a new resource.
 *
 * @return Response
 */
public function create(){

    $loggedInUser = \Auth::user();  
    $users = User::lists('first_name', 'id');
    $instructors = // Here comes a collection that has a role_id "2" on the pivot table.
                  //This is where I have no idea what to put 

    return view('courses.create', compact('loggedInUser', 'users', 'instructors'));
}

在这种情况下,我想将下面的集合放在上面的变量"讲师"因为下面的集合已经附加到role_id 2,这是一个教师。

   id: "2",
   first_name: "alex",
   last_name: "powder",
   email: "alex@example.com",
   ID: "819763758",
   created_at: "2016-04-18 21:34:12",
   updated_at: "2016-04-19 19:30:48"

$讲师授课>角色

   id: "2",
   name: "instructor",
   created_at: "2016-04-18 21:34:13",
   updated_at: "2016-04-18 21:34:13",
   pivot: <Illuminate\Database\Eloquent\Relations\Pivot #000000007a61781e00000001381bb0f0> {
           user_id: "2",
           role_id: "2",
           created_at: "2016-04-18 22:54:06",
           updated_at: "2016-04-18 22:54:06"

Role.php

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

user.php的

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

英语不是我的第一语言。如果这篇文章没有意义,请留下您的意见。任何意见,将不胜感激!提前致谢!

3 个答案:

答案 0 :(得分:1)

  

如果您正在寻找拥有的用户,则必须使用whereHas   role_id 2

    $instructors = User::whereHas('roles', function($q) {
        $q->where('id', 2);
    })->with('roles')->get();

它会带来roles 2

的用户

答案 1 :(得分:1)

尝试此查询。

$instructors = User::whereHas('roles', function($query) {
    $query->where('roles.id', '=', 2);
})->get();

答案 2 :(得分:1)

对于具有role_id(动态)的用户是:

$role_id = 2;

$instructors = User::with('roles')->whereHas('roles', function($q) use ($role_id){ 
      $q->where('role_id', $role_id);
})->get();