我在Laravel上運行此代碼。如果我收到它們,我將添加過濾器/排序,並在運行之前更改查詢,然後對結果進行分頁。Laravel 5;在不改變它的情況下使用已經過濾的數據計數
$aDatas = DB::table('datas');
if (!empty($aLocations)) {
foreach ($aLocations as $oLocation) {
$aDatas->orWhere('pc', '=', $oLocation->pc);
}
}
if (!empty($oFilters->note)) {
$aDatas->where('note', '>=', $oFilters->note);
}
if (!empty($oFilters->nb_comments)) {
$aDatas->where('nb_comments', '>=', $oFilters->nb_comments);
}
if (!empty($oOrder->type)) {
$aDatas->orderBy($oOrder->type, $oOrder->sort);
}
// echo $aDatas->where('note', '>=', 5)->count() ????
它工作正常。 但我想用這些結果來計算它的幾個部分。 最後一行顯示我試圖做的事,計算這些過濾結果中有多少行記錄> = 5。但是,這樣做實際上會過濾我的原始數據。
我想過把$ aDatas分配給另一個變量,然後依靠這個,但我會有很多計數,這似乎很髒。
有沒有一個甜美的方式來做到這一點?
你能解釋一下嗎?爲什麼你需要每個過濾器的計數? – Mithredate
我正在顯示過濾器(即過濾器),該過濾器有多少個結果。因此,如果我僅顯示超過3顆星的結果以及超過50條評論,我想向用戶展示這些結果中有多少顆有4顆星和5顆星。編輯:也許,我想也顯示有多少這些結果有超過100條評論。 –