반응형
같은 테이블 데이터를 조인해서 id로 group by 하고 생성된 테이블 데이터의 기간 차이를 가져올 예정.
subquery에서 select 하는 querybuilder 가 존재하지 않으므로..
logs 테이블을 조건검색하는 sql문을 생성한다.
$sql = $this->logs()
->select('logs.id', 'logs.createdate', DB::raw('MIN(b.createdate) as nextdate'))
->leftJoin('logs as b', function($join) {
$join->on('logs.id', '=', 'b.id');
$join->on('logs.createdate', '<', 'b.createdate');
})
->where(function($query) {
$query->where('logs.pausedate', '<>', null)
->orWhere('logs.unpausedate', '<>', null);
})
->whereYear('logs.createdate', '=', date('Y'))
->groupBy('logs.id', 'logs.createdate')
->orderBy('logs.createdate');
생성한 sql을 테이블화 하고
$sql->getbaseQuery()로 laravel Eloquent에서 사용 가능한 쿼리 빌더를 가져온다.
mergeBinding으로 첫번째 쿼리와 두 번째 쿼리를 바인딩한다.
$result = DB::table(DB::raw("({$sql->toSql()}) as sub"))
->select(DB::raw("SUM(DATEDIFF(sub.nextdate, sub.createdate)) AS pauseperiod"))
->mergeBindings($sql->getbaseQuery())
->get()
->first();
끗
반응형
'개발 > laravel' 카테고리의 다른 글
라라벨에서 커스텀 helper 등록하기 (2) | 2024.10.07 |
---|---|
Laravel의 whereJsonContains 메서드: JSON 데이터 필터링의 강력한 도구 (3) | 2024.10.07 |
라라벨 Sail 설정 가이드 (0) | 2023.10.10 |
[Laravel] log permission denied (0) | 2023.07.11 |
[laravel5.5] 302 redirect status code (0) | 2022.09.06 |