在我Laravel應用程序,我在模型(ModelA
),而利用的SQL_CALC_FOUND_ROWS
,然後進行事後SELECT FOUND_ROWS()
做一個普通的查詢檢索的所有記錄的計數因爲第一個查詢使用LIMIT
和OFFSET
。Laravel - 使用`SQL_CALC_FOUND_ROWS`與渴望加載關係返回錯誤計數
這工作得很好,但現在我已經添加了一個關係到我上面查詢的模型,如果我做同樣的查詢但使用with->('modelB')
,這個查詢是在初始查詢之後和SELECT FOUND_ROWS()
之前執行的,所以我得到正如我期待的那樣,ModelB
結果的計數而不是ModelA
。
有沒有辦法讓這項工作按照需要在哪裏我得到的第一個(主)查詢的計數,而不是關係?
例如這工作得很好:
$query = ModelA::select([DB::raw("SQL_CALC_FOUND_ROWS *")])
->where('active', 1);
// conditional ->where()'s
$query->skip(intval($skip))
->take(intval($take))
->orderBy($column, $dir);
$results = $query->get();
$total = DB::select(DB::raw("SELECT FOUND_ROWS() AS 'total';"))[0]->total;
但改變第一線,這並不:
$query = ModelA::with('modelB')
->select([DB::raw("SQL_CALC_FOUND_ROWS *")])
->where('active', 1);
一種解決方法是僅僅做沒有急於加載和單獨提取每個關係,但後來我想當我在代碼中稍後循環結果時,每個結果都有一個查詢。
從來沒有想到這一點,我認爲這可能是最簡單的方法。謝謝! – martincarlin87