MySQL 다중 문 쿼리를 Laravel Eloquent로 변환
다음 MySQL 쿼리를 고려하세요.
SELECT <br> GROUP_CONCAT(DISTINCT</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">CONCAT( 'ifnull(SUM(case when location_code = ''', location_code , ''' then quantity end),0) AS `', location_code , '`' )
) INTO @sql
FROM
item_details;
SET @sql = CONCAT('SELECT item_number,SUM(수량)을 "총_수량"으로, ', @sql, '
FROM item_details GROUP BY item_number');
@sql에서 PREPARE stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
문제는 특히 PREPARE, EXECUTE, SET 및 DEALLOCATE와 같은 다양한 문을 고려하여 이 쿼리를 Laravel Eloquent로 변환하는 것입니다.
해결책:
대부분 변환이 필요합니다. 원시 쿼리 포함:
DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();<br> DB::statement('SET @sql = CONCAT(...)');<br>DB::statement('@sql에서 stmt 준비');<br>DB::statement('EXECUTE stmt'); <br>DB::statement('DEALLOCATE PREPARE stmt');<br>
다음은 더 자세한 구현입니다.
DB::table( 'item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();<br>$sql = DB::selectOne('select @sql')->{' @sql'};<br>ItemDetails::select('item_number', DB::raw('SUM(수량) as total_Quantity'))</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">->selectRaw($sql) ->groupBy('item_number') ->get();
이 접근 방식은 원시 쿼리와 Eloquent 메서드의 조합을 활용하여 원본 MySQL 쿼리에서 Laravel Eloquent로의 변환을 효과적으로 처리합니다.
위 내용은 MySQL 다중 문 쿼리를 Laravel Eloquent로 어떻게 변환할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!