ホームページ  >  記事  >  バックエンド開発  >  複雑な複数ステートメントの MySQL クエリを Laravel Eloquent に変換するにはどうすればよいですか?

複雑な複数ステートメントの MySQL クエリを Laravel Eloquent に変換するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 13:48:02503ブラウズ

How Can I Convert a Complex Multi-Statement MySQL Query to Laravel Eloquent?

複雑な複数ステートメントの MySQL クエリを Laravel Eloquent に変換する

このクエリには、GROUP_CONCAT、SET、PREPARE、 EXECUTE と DEALLOCATE は、Laravel Eloquent に変換するのが大変な場合があります。段階的に見ていきましょう。

まず、Laravel は PREPARE や EXECUTE のような準備されたステートメントをサポートしていません。ただし、生のクエリを使用して、これらの各ステートメントを個別に実行できます。

<code class="php">DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();
DB::statement('SET @sql = CONCAT(...)');
DB::statement('DEALLOCATE PREPARE stmt');</code>

次に、SET ステートメントの結果を取得する必要があります。これはスカラー値であるため、selectOne() を使用して取得できます。

<code class="php">$sql = DB::selectOne('select @sql')->{'@sql'};</code>

最後に、取得した SQL 文字列を Eloquent クエリで使用できます。

<code class="php">ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity'))
    ->selectRaw($sql)
    ->groupBy('item_number')
    ->get();</code>

このコード生のクエリを使用して複数ステートメントの MySQL クエリを実行し、期待される結果を取得します。

以上が複雑な複数ステートメントの MySQL クエリを Laravel Eloquent に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。