Laravel

[Laravel] From Subquery 작성방법

먹세 2022. 12. 13. 12:04

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 쿼리임.

반응형