拉拉维尔得到行,上面和下面都有记录

  • 本文关键字:记录 laravel laravel-4
  • 更新时间 :
  • 英文 :


>我有一个Laravel 4.2项目,我从SQL DB获取数据,我可以显示在页面上。我可以很好地选择单个记录,但我还想显示所选记录周围的记录。

例如,我想在所选记录的上方和下方显示 5 条记录。我不确定如何在拉拉维尔做到这一点。

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

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

  1. 美国广播公司学院
  2. 另一所学院
  3. 布拉赫学院
  4. 上大学
  5. 测试学院
  6. 又是一所学院
  7. 溜球学院
  8. 学院
  9. 学院
  10. 某事学院
  11. 饮食学院

由于您的初始查询中没有指定排序,我假设您希望根据表中的主键(id? - 如果没有,您显然需要更改它(中的 5 条下一个/上一个记录?

鉴于 ID 可能不是数字顺序的,我们不能简单地假设前 5 行将是标题 =$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 条记录。如果需要,您还可以使用初始行来突出显示输出。

如果您希望它基于 ID,这是我从您的问题中了解到的,这样的事情应该可以工作:

$selectedGradSchool = MOGRadschool::where('Title', '=', $gradschool)->get()->first();
$aboveSelected = MOGRadschool::where('id', '<=', $selectedGradSchool->id)
->orderBy('id', 'desc')
->take('5')
->get();
$belowSelected = MOGRadschool::where('id', '>' $selectedgradSchool->id)
->take('5')
->get();
//Concatenate both results
$schoolRange = $aboveSelected->concat($belowSelected);

现在,集合应该看起来与所需的结果相似。

相关内容

  • 没有找到相关文章

最新更新