두 개의 테이블이 school_users
있고 users
. Eloquent를 사용하여 모든 사용자를 user_id
동일한 위치로 가져 오는 쿼리를 만들어야합니다 school_id
. 결과는 둘 이상의 사용자 여야하므로 결과를 school_id별로 그룹화해야합니다.
davance에서 감사합니다
관계 : 사용자 모델 :
public function school()
{
return $this->hasMany(SchoolUser::class);
}
SchoolUser 모델 :
public function user()
{
return $this->hasMany(User::class);
}
School_users
표:
+----+---------+------------+-------------+
| id | user_id | school_id | created_at |
+----+---------+------------+-------------+
| 1 | 79 | 79 | <SOME TIME> |
| 2 | 85 | 79 | <SOME TIME> |
| 3 | 86 | 85 | <SOME TIME> |
| 4 | 87 | 85 | <SOME TIME> |
+----+---------+------------+-------------+
users
표:
+----+
| id |
+----+-
| 79 |
| 85 |
| 86 |
| 87 |
+----+-
사용자 모델 :
public function getUsers()
{
return $this
->leftJoin('school_users', $this->table . '.id', '=', 'school_users.school_id')
->select(
$this->table . '.*',
'school_users.school_id as school_id'
)
->whereIn('users.id', '=', 'school_users.school_id')
->orderBy('id', 'desc')
->get();
}
다음 과 같은 whereColumn
필터링에 사용 ,user_id
school_id
join
대신 사용하십시오 leftjoin
:
public function getUsers()
{
return $this
->join('school_users', function($join) {
$join->on('school_users.user_id', '=', $this->table.'.id')
->whereColumn('school_users.user_id', 'school_users.school_id');
})
->select
(
$this->table.'.*',
'school_users.school_id as school_id'
)
->orderBy($this->table.'.id','desc')
->get();
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다