Laravel 5.6 이상부터 fromSub() 사용
DB::query()->fromSub(function($q){
$q->from('table')->groupBy('name');
}, 'a')->select('a.id', 'a.name');
위 쿼리는 아래와 동일한 SQL임
select a.id, a.name from (select * from 'table' group by 'name') as 'a'
또는 아래와 같이 사용 가능
쿼리빌더의 getQuery를 사용하여 작성.
// Users Model 내 작성
public function getUsersListSubQuery()
{
return $this->select('id', 'name')
->leftjoin(...)
->where(...)
->groupBy(...)
}
$usersElo = new UsersEloquent();
$subQuery = $usersElo->getUsersListSubQuery();
$lists = DB::table(DB::raw("({$subQuery->toSql()}) as total"))
->mergeBindings($subQuery->getQuery())
->orderBy('total.id', 'desc')
->get()
위 쿼리도 from 절에 들어가는 sub 쿼리임.
반응형
'Laravel' 카테고리의 다른 글
[Redis] Laravel 에서 Redis Expire 설정하기 (0) | 2023.01.16 |
---|---|
[Laravel] Console Command Argument 옵션 (0) | 2023.01.03 |
[Laravel] updateOrInsert (2) | 2022.04.06 |
[Laravel] migration 으로 column default 를 current_timestamp로 변경하기 (0) | 2022.03.23 |
[Laravel] Queue 명령어 (0) | 2022.02.15 |