2017-03-09 82 views
0

現在我有這樣的代碼:Laravel 5 - 如何過濾收集物品直至找到特定物品數量?

return MyModel::all()->filter(function($value){ 
    return $value->attribute == 5; 
})->slice(0, 6); 

attribute值通過訪問加載的,所以我不能只是做where('attribute', 5)代替。有沒有標準的方法來優化這個,所以過濾器只會返回前6個匹配的項目?

+0

你想只取前6個匹配的項目?哪裏('屬性',5)不起作用? – Muthu17

+0

@ Muthu17'attribute'被定義爲'getAttributeAttribute'訪問器,它不可移植到SQL語法,所以'where'這裏將不起作用(數據庫中根本沒有'attribute'字段)。 –

回答

0

嘗試在你的迴歸使用:

MyModel::all()->take(6)->filter..... 

或嘗試在查詢結束使用->paginate(6);

+0

不,在這種情況下,如果它們中的一些被過濾,我將得到少於6個項目。 –