最好的方式为下一个/上一个按钮的条目在yii

vx6bjr1n  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(497)

我想知道什么是最好的方法来创建下一个/上一个按钮的一个条目在数据库中。假设我们有一个包含图像的表,每个图像都有一个ID和一个Path。如果当前图像的ID等于“9”,我如何获得下一个和前一个ID?
我已经找到了一个解决方案,就在这里https://stackoverflow.com/a/8874382,但这似乎是最新的选择。如果我们的数据库中有超过10000个条目(图像),这将使服务器不堪重负。首先,它选择所有条目,然后尝试复制数组中的所有结果。在此之后,在数组中搜索当前ID。很慢的。
我正在考虑对查询设置一个限制,但在此之后如何获得下一张和上一张图片?
另一个(我认为更好的)解决方案是获取当前图片的ID,并递减/递增它,直到找到另一个具有新ID的图像。我认为这比链接中提供的功能更快。
此外,在同一个链接中还有另一个想法,在当前图片的模型中设置prev_id和next_id。但我们有同样的问题,我们如何找到他们?即使我们找到了它们,在当前图片中存储有关prev/next图片的数据是否正确?这似乎不正确,但我相信当你需要访问这些数据时,它会更方便。
谢谢你!

x7yiwoj4

x7yiwoj41#

此查询将只返回下一行/上一行(如果找到)。更好?(应该在你的模型类中实现)。

public function getNextId()
{
    $record=self::model()->find(array(
            'condition' => 'id>:current_id',
            'order' => 'id ASC',
            'limit' => 1,
            'params'=>array(':current_id'=>$this->id),
    ));
    if($record!==null)
        return $record->id;
    return null;
}
public function getPreviousId()
{
    $record=self::model()->find(array(
            'condition' => 'id<:current_id',
            'order' => 'id DESC',
            'limit' => 1,
            'params'=>array(':current_id'=>$this->id),
    ));
    if($record!==null)
        return $record->id;
    return null;
}

相关问题