我是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();
}
英语不是我的第一语言。如果这篇文章没有意义,请留下您的意见。任何意见,将不胜感激!提前致谢!
答案 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();