我有这个数据库结构:
classroom_user
是 Elqouent 多对多枢轴。
用户.php :
public function classrooms() {
return $this->belongsToMany(ClassRoom::class, 'classroom_user', 'classroom_id', 'user_id');
}
ClassRoom.php :
public function users()
{
return $this->belongsToMany(User::class, 'classroom_user', 'user_id', 'classroom_id');
}
我有一个$user
并想编写 Eloquent 方法,该方法可以让所有至少在其中一个教室中的用户都$user
在。类似$user->classrooms->users
. 但这是错误的Property [users] does not exist on this collection instance.
。我怎样才能做到这一点?
我认为你可以这样做:
$users = User::whereHas('classrooms', function($query) {
$query->whereHas('users', function($query) {
$query->where('id', auth()->user()->id);
});
})->get();
您可以将其存储为User
模型中的范围:
public function scopeClassmatesOf($query, $user)
{
$query->whereHas('classrooms', function($query) use($user) {
$query->whereHas('users', function($query) use($user) {
$query->where('id', $user->id);
});
})
}
然后从控制器调用它,如:
$user = auth()->user();
$users = User::classmatesOf($user)->get();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句