以下に、エロクワントを使用したサブクエリのいくつかの例を示します。
- 子クエリの結果を利用する例:
$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の顧客情報を取得しています。
- サブクエリの結果を条件として利用する例:
$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の公式ドキュメントを参照してください。