내 코드 :이 솔루션에서Laravel 피벗 열 필터링
$course = Course::find(1);
$teachers = $course->Users()->where('role_id', 1)->get();
$students = $course->Users()->where('role_id', 2)->get();
, 나는 두 개의 서로 다른 사용자 유형이있다. Users() 함수는 belongsToMany 관계입니다.
public function Users()
{
return $this->belongsToMany(User::class, 'course_users')->withPivot('role_id');
}
그리고 내 course_users 테이블 컬럼 : USER_ID, Course_ID에는 제대로 실행
이 코드를 ROLE_ID.
그러나 쿼리를 살펴보면이 상황에 대해 두 가지 SQL 쿼리를 보았습니다. 하나의 쿼리 만 사용하고 필터링 된 값만 성능에 적합한 변수로 가져 오려고합니다. 내가 어떻게 해?
아래 코드를 시도했습니다. 하지만 첫 번째 변수 $ 교사 만 가져 오지만 $ 학생은 가져 오지 않습니다.
$users = $course->Users();
$teachers = $users->where('role_id', 1)->get();
$students = $users->where('role_id', 2)->get();
귀하의 의견은 무엇입니까? 감사합니다.
$users = $course->Users()->whereIn('role_id', [1, 2])->get();
을 그리고 데이터 필터링 컬렉션을 사용합니다 : 하나의 쿼리를 가지는 것이 중요 경우
나는 $ users가 3 개의 항목을 가져 오려고했습니다. $ teacher와 $ students 항목은 비어 있습니다. 그밖에 또 무엇이 문제가 될 수 있습니까? – Cem