>백엔드 개발 >PHP 튜토리얼 >MySQL 다중 문 쿼리를 Laravel Eloquent로 어떻게 변환할 수 있나요?

MySQL 다중 문 쿼리를 Laravel Eloquent로 어떻게 변환할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-10-26 04:29:31198검색

How can I convert a MySQL multi-statement query to Laravel Eloquent?

MySQL 다중 문 쿼리를 Laravel Eloquent로 변환

다음 MySQL 쿼리를 고려하세요.

SELECT <br> GROUP_CONCAT(DISTINCT</p>
<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>
<pre class="brush:php;toolbar:false">->selectRaw($sql)
->groupBy('item_number')
->get();

이 접근 방식은 원시 쿼리와 Eloquent 메서드의 조합을 활용하여 원본 MySQL 쿼리에서 Laravel Eloquent로의 변환을 효과적으로 처리합니다.

위 내용은 MySQL 다중 문 쿼리를 Laravel Eloquent로 어떻게 변환할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.