2017-05-24 2 views
0

사용자 테이블에서 행을 가져 오는 중이며 아래 코드를 사용하고 있습니다.
laravel에서 데이터베이스에서 가져온 배열 데이터에 제한을 추가하는 방법

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

나는 $ 사용자 데이터에 대한 배열 제한을 추가 할. paginate();을 사용하고 싶지 않습니다.) (I 코드 아래 사용하고 있지만

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

을 작동하지 않습니다하지만이 메시지와 함께 오류 메시지

예외 'ErrorException'아래에 보여주는 것 'array_slice을 제한을 추가하려면 매개 변수 (1)가 배열 될 것으로 예상 , 주어진 개체 '........

어떻게 $user에 한도를 더합니까?

답변

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

시도 제한 또는

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

당신이 사용하는 의미합니까 : $userscollection 아닌 배열이기 때문에 오류를 얻고있다

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

'$ user'이 배열 인 경우 array_slice가 좋을 것입니다. 아마 배열로 변환하는 것은'$ users = array_slice ($ user-> toArray(), 0, 2); '을 수행 할 것이지만 더 좋은 방법은'$ users = $ user-> take (2);' –

0

.

당신은 당신은 또한 사용할 수있는 최신 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); 
관련 문제