【发布时间】:2015-04-21 16:41:01
【问题描述】:
假设我有一个父集合的孩子,我想知道下一个兄弟姐妹是谁。我的父集合的排序方式与内部 ID 不同,因此我无法使用此处描述的方法:
Laravel previous and next records
除了我按名称和时间而不是内部 id 排序之外,这会起作用。我希望有一种方法可以获取父集合,在其中找到这个孩子的位置,然后在该集合中向前或向后看以获得下一个或上一个。
编辑:
所以,我做了这个,它有效,但看起来很笨重。有没有更有效的方法来做到这一点?
public function next()
{
$previous = null;
foreach ($this->album->media as $media)
{
if(!empty($previous && $previous->id == $this->id))
{
// Yay! Our current record is the 'next' record.
return $media->id;
}
$previous = $media;
}
return null;
}
public function previous()
{
$previous = null;
foreach ($this->album->media as $media)
{
if(!empty($previous && $media->id == $this->id))
{
// Yay! Our previous record is the 'previous' record.
return $previous;
}
$previous = $media->id;
}
return null;
}
【问题讨论】:
-
您可以通过按排序条件扩展给定示例的查询。你的收藏是如何分类的?您需要一个 orderBy Condition 排序,它基本上不会更改原始顺序。如果您提供,我相信我们可以提供帮助
-
@nozzleman 按时间,对于重复的时间,按字母名称。
-
好的,我猜双阶条件你已经找到了一个好的解决方案。其他解决方案将包括特定于 db-server 的东西,比如我猜的行号。
-
你为什么不直接使用
paginate(1)呢? -
不是按键分页的。