Laravel在上面和下面的记录中排行

时间:2018-10-02 20:31:01

标签: laravel laravel-4

我有一个Laravel 4.2项目,可以从SQL DB中获取数据,并且可以显示在页面上。我可以选择单个记录,但是我还想显示所选记录附近的记录。

例如,我想显示所选记录上方和下方的5条记录。我不确定如何在Laravel中执行此操作。

$gradschoolrange = MOGRadschool::where('Title', '=', $gradschool)->get();

在上面的示例中,$ gradschool可能是“ Test College”,它将返回一个带有值的值,但是我也想使用这些值显示周围的所有其他相关记录。结果应如下所示:

  1. ABC学院
  2. 另一所大学
  3. 布拉赫学院
  4. 上大学
  5. 测试学院
  6. 又一所大学
  7. 溜溜学院
  8. 大学学院
  9. 东西大学
  10. 饮食学院

2 个答案:

答案 0 :(得分:1)

由于您的初始查询中没有指定顺序,因此我假设您要根据表中的主键(id?-否则显然您需要更改)5个下一个/上一个记录?

鉴于ID可能不是数字顺序的,我们不能简单地假设前5行将是title = $gradschool减5的行的ID,因此想知道这是否可行:

    $initial = MOGRadschool::where('Title', $gradschool)->first(); // get the initial row with the title of $gradschool
    $result = MOGRadschool::where('id', '<', $initial->id)->take(5)->orderBy('id', 'DESC') // new query getting the previous 5 rows, by ID
        ->union(MOGRadschool::where('id', '>', $initial->id)->take(5)) // union a second query getting the next 5 rows by ID
        ->get() // get the result as a collection
        ->add($initial) // add the initial row to the collection
        ->sort(); // sort the collection (by id) so that the initial row is in the middle

因此,输出是一个集合,该集合在中间包含初始行,每行最多5条记录。如果需要,您还可以在第一行突出显示输出。

答案 1 :(得分:1)

如果您希望根据ID(我从您的问题中了解到的信息)进行操作,则应执行以下操作:

Box<T>

现在,集合应该看起来与您想要的结果类似。