2015-01-04 4 views
1

주어진 레코드 ID 뒤에 10 개의 레코드를 가져 오려고합니다.주어진 ID 뒤에 Laravel 레코드

$media = Media::where('active', '=', 1)->after('id',$after)->take(10)->get(); 

Laravel에는 after 기능이 없습니다. 이것을 할 또 다른 방법이 있습니까?

+1

where 절을'$ id> $ after'에서 사용할 수 있습니까? – msturdy

답변

1

을 사용하여 다른 where clause :

$media = Media::where('active', 1) // don't need the "=" 
       ->where('id', '>', $after) 
       ->take(10) 
       ->get(); 

이쪽을 구축 할 것 SQL의 다음 쿼리 (미디어 모델에서 $table이 "미디어"로 정의되었다고 가정) :

SELECT * 
    FROM media 
WHERE active = 1 
    AND id > $after 
LIMIT 10 

@lukasgeiter mentions으로 주문 확인서없이 결과 순서가 보장되지 않으므로 id 열로 결과를 주문해야합니다.

+0

이 방법이 작동합니다. 맞춤 식별자를 사용하려면 어떻게해야합니까? 'id '대신'slug'를 사용합니까? –

+0

''슬러그 ''를 위해'id '를 바꾸는 것만 큼의 경우입니다. 주 -'slug'가 프라이 머리 키가되는 경우, 모델에서 그것을 정의 할 필요가 있습니다. – msturdy

+0

mmm 먼저 레코드 ID를 검색해야합니다. –

2

id > $after을 의미합니까? 또한

$media = Media::where('active', '=', 1) 
       ->where('id', '>', $after) 
       ->take(10) 
       ->get(); 

는 결과가 id로 정렬됩니다 있는지 확인하고 처음 10 $after 후에 당신이 가지고 :

$media = Media::where('active', '=', 1) 
       ->where('id', '>', $after) 
       ->orderBy('id', 'asc') 
       ->take(10) 
       ->get();