-
Query Builder 직접 쿼리를 작성백엔드/laravel 2024. 1. 15. 16:10
먼저 selectRaw 메소드를 살펴봅시다. 이 메소드는 컬럼 대신 원시 표현식을 선택할 수 있게 해줍니다.
예를 들어, 모든 레코드의 개수를 post_count라는 별칭으로 선택하고자 한다면 다음과 같이 사용할 수 있습니다:
$results = DB::table('posts')->selectRaw('count(*) as post_count')->get();
이것은 select count(*) as post_count from posts와 동일한 결과를 반환합니다.
다음으로 whereRaw 메소드를 사용하여 쿼리에 원시 WHERE 절을 추가할 수 있습니다.
예를 들어, created_at 열이 현재 시간보다 1일 이상 뒤인 포스트를 선택하고자 한다면 다음과 같이 사용할 수 있습니다:
$results = DB::table('posts')->whereRaw('created_at > now() - interval 1 day')->get();
havingRaw 메소드를 사용하여 쿼리에 원시 HAVING 절을 추가할 수도 있습니다.
예를 들어, minutes_to_read 열의 합계가 10보다 큰 경우에만 사용자 ID와 해당하는 포스트를 선택하고자 한다면 다음과 같이 사용할 수 있습니다:
$results = DB::table('posts')
->select('user_id')
->selectRaw('SUM(minutes_to_read) as total_time')
->groupBy('user_id')
->havingRaw('SUM(minutes_to_read) > 10')
->get();마지막으로 groupByRaw 메소드를 사용하여 쿼리 결과를 원시 표현식을 기준으로 그룹화할 수 있습니다.
예를 들어, 사용자 ID를 기준으로 minutes_to_read 열의 평균을 계산하고자 한다면 다음과 같이 사용할 수 있습니다:
$results = DB::table('posts')
->select('user_id')
->selectRaw('AVG(minutes_to_read) as avg_minutes_to_read')
->groupByRaw('user_id')
->get();이렇게 함으로써 Query Builder를 사용하여 복잡한 쿼리를 작성하고 필요한 데이터를 원하는 방식으로 가져올 수 있습니다.
'백엔드 > laravel' 카테고리의 다른 글
Query Builder 풀 텍스트 인덱스 (0) 2024.01.15 Query Builder orderBy, latest, 그리고 oldest 메소드 (0) 2024.01.15 query builder big data set 작업시 지연 로드 lazy 와 lazyById 메서드 (5) 2024.01.14 query builder big data set 분할 처리하는 chunk 메서드 (1) 2024.01.14 query builder Pessimistic Locking (0) 2024.01.14