2017-05-24 4 views
0

私はユーザーテーブルから行を取得していますが、私は以下のコードを使用しています。
laravelのデータベースからフェッチされた配列データに制限を加える方法

<?php $user = User::get(); ?> 

私は$のユーザデータの配列の制限を追加したいです。私はpaginate();を使いたくありません。私はコードの下に使用していますが、それは

$users = array_slice($users, 0,2);

を働いていない。しかし、メッセージ「array_sliceと

例外「ErrorExceptionは」() パラメータ1が配列であることを期待し、エラーメッセージの下に見せて制限を追加するには、与えられたオブジェクト........

$userにはどのように制限を加えますか?

答えて

2
<?php 
    $user = User::get(); 
    $user = $user ->limit(10); 
?> 

トライ制限または

<?php 
    $user = User::get(); 
    $user = $user ->take(10); 
?> 
0

あなたが使用することを意味するか:

$users = array_slice($user, 0,2); 
+0

'$ user'が配列の場合、array_sliceは良いでしょう。たぶんそれを配列に変換するのは '$ users = array_slice($ user-> toArray()、0、2); 'ですが、もっと良い方法は' $ users = $ user-> take(2); ' –

0

$userscollection、配列ではありませんので、あなたがエラーを取得しています。

は、あなたが使用することもでき、最近Laravelのバージョンではtake方法

$users = User::get()->take(3); 

またはslice方法

$users = User::get()->slice(3); 
1

を使用することができます。

User::limit(10)->offset(0)->get(); 

ユーザーモデルはEloquentを拡張する必要があります。

+0

これは、クエリーの結果を既に制限しているので、これはより良い答えです。その結果、すべてのユーザーではなく、単に結果が必要になります。また、 ' - > take(10) - > get()'を使うこともできます。 –

+0

'get'メソッドが最適です。リソース管理の改善のために' where'、 'limit'、' offset'、 。 –

0

これを実現する方法はいくつかあります。

クエリビルダにオフセットと制限を直接適用すると、必要な行だけをフェッチできます。

$users = User::skip(5)->take(10)->get(); 
$users = User::offset(5)->limit(10)->get(); 

完全な結果で作業することを強くお勧めする場合は、このアプローチが必要です。結果はコレクションであるため、array_sliceではなくcollection sliceメソッドを使用する必要があります。

$users = User::all(); 
// Collection slice(offset, limit) 
$users = $users->slice(5, 10); 
関連する問題