首頁 > 資料庫 > mysql教程 > 如何使用 Laravel 的查詢產生器有效率地從子查詢中進行選擇?

如何使用 Laravel 的查詢產生器有效率地從子查詢中進行選擇?

Linda Hamilton
發布: 2025-01-12 07:08:43
原創
274 人瀏覽過

How to Efficiently Select from Subqueries Using Laravel's Query Builder?

使用 Laravel 查詢建構器從子查詢中選擇資料

問題: 使用 Eloquent ORM 從 SQL 子查詢擷取計數聚合的值。

最初方法:

<code class="language-php">$sql = Abc::from('abc AS a')
    ->groupBy('col1')
    ->toSql();

$num = Abc::from(\DB::raw($sql))
    ->count();</code>
登入後複製

這種方法需要手動產生子查詢 SQL,這不是理想的做法。

最佳解:

Laravel 查詢建構器目前缺乏在 FROM 子句中建立子查詢的專用方法。 必須手動使用原始語句,並進行正確的綁定管理:

<code class="language-php">// 定义子查询
$sub = Abc::where(...)->groupBy(...); // Eloquent Builder 实例

// 创建主查询
$count = DB::table(DB::raw("({$sub->toSql()}) AS sub"))
    ->mergeBindings($sub->getQuery()) // 正确合并绑定
    ->count();</code>
登入後複製

注意: 必須以正確的順序合併綁定。如果在合併後新增了其他條件,則必須調整順序以確保正確的綁定。

以上是如何使用 Laravel 的查詢產生器有效率地從子查詢中進行選擇?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板