Laravel在给定ID之后记录


Laravel records after a given ID

我试图在给定的记录ID之后获取10条记录。

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

拉拉维尔没有after功能。有没有其他方法可以做到这一点?

使用另一个where子句:

$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提到的,您应该按 id 列对结果进行排序,因为如果没有 order by 语句,则无法保证结果的顺序。

你是说id > $after吗?

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

还要确保结果将按 id 排序,并且您在 $after 之后取前 10 个:

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