2015-01-04 2 views
1

Я пытаюсь получить 10 записей после заданного идентификатора записи.Записи Laravel после заданного ID

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

Там нет after функции Laravel. Есть ли другой способ сделать это?

+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 определен как «носитель» в модели Media):

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

Как @lukasgeiter mentions, вы должны заказать свои результаты по столбцу id, поскольку порядок результатов не гарантируется без предварительного уведомления.

+0

Это работает, если я хочу использовать пользовательский идентификатор? 'slug' вместо' id'? –

+0

Это просто случай замены 'id' для' slug'. Примечание. Если 'slug' должен быть основным ключом, вам нужно определить это в модели. – msturdy

+0

mmm выглядит так, что я сначала должен получить идентификатор записи. –

2

Возможно, вы имели в виду id > $after?

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

Кроме того, чтобы убедиться, что результат будет упорядочен по идентификатору и вы принимаете первые 10 после того, как $after:

$media = Media::where('active', '=', 1) 
       ->where('id', '>', $after) 
       ->orderBy('id', 'asc') 
       ->take(10) 
       ->get(); 
Смежные вопросы