2017-03-09 1 views
0

は、今私は、このようなコードを持っている:Laravel 5 - 特定のアイテム数が見つかるまでコレクションをフィルタリングする方法は?

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

attributeの値はアクセサを使ってロードされているので、私はちょうど代わりwhere('attribute', 5)を行うことはできません。これを最適化するための標準的な方法はありますか?そのため、フィルタは最初に一致した6項目のみを返します。あなたの帰りにこれを使用する

+0

の終わりに->paginate(6);を使用しようとするあなただけの最初の6つの一致したアイテムをしたいですか?どこ( '属性'、5)は動作していないのですか? – Muthu17

+0

@ Muthu17 '属性'は 'getAttributeAttribute'アクセサとして定義されています。これはSQL構文と互換性がないため、' where'は動作しません(データベースに 'attribute'フィールドは全くありません)。 –

答えて

0

試してみてください。

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

またはクエリ

+0

いいえ、このケースでは、フィルタリングされているものが6つ未満のアイテムがあります。 –

関連する問題