エロクワントなサブクエリの使い方


以下に、エロクワントを使用したサブクエリのいくつかの例を示します。

  1. 子クエリの結果を利用する例:
$subquery = DB::table('orders')
                ->select('customer_id', DB::raw('SUM(total_amount) as total_sales'))
                ->groupBy('customer_id');
$customers = DB::table('customers')
                ->select('id', 'name')
                ->whereIn('id', function ($query) use ($subquery) {
                    $query->fromSub($subquery, 'sub')
                          ->whereColumn('customers.id', '=', 'sub.customer_id')
                          ->orderByDesc('total_sales')
                          ->limit(10);
                })
                ->get();

上記の例では、ordersテーブルから各顧客の総売上を計算するサブクエリを作成し、その結果を利用して、売上トップ10の顧客情報を取得しています。

  1. サブクエリの結果を条件として利用する例:
$popularProducts = DB::table('products')
                    ->whereIn('id', function ($query) {
                        $query->select('product_id')
                              ->from('order_items')
                              ->groupBy('product_id')
                              ->havingRaw('SUM(quantity) > ?', [100]);
                    })
                    ->get();

上記の例では、order_itemsテーブルから数量が100以上の商品IDを持つ商品を抽出しています。

これらは一部のエロクワントサブクエリの例です。エロクワントを使ったサブクエリは、データベース操作を柔軟に行うための強力なツールです。詳細な使い方や他の例については、Laravelの公式ドキュメントを参照してください。