【问题标题】:best way for next/previous buttons for entries in yiiyii 中条目的下一个/上一个按钮的最佳方式
【发布时间】:2012-10-22 13:31:37
【问题描述】:

我想知道为数据库中的条目创建下一个/上一个按钮的最佳方式是什么。 假设我们有一个包含图像的表,每个图像都有一个 ID 和一个路径。 如果当前图像的 ID 等于“9”,我如何获取下一个和上一个 ID?

我已经在这里找到了解决方案 https://stackoverflow.com/a/8874382 但这似乎是最新的选择。如果我们的数据库中有超过 10000 个条目(图像),这将使服务器不堪重负。首先,它选择所有条目,然后尝试将所有结果复制到一个数组中。之后,在数组中搜索当前 ID。速度很慢。

我正在考虑为查询设置限制,但在此之后如何获取下一张和上一张图片?

另一个(我认为更好)的解决方案是获取当前图片的 ID 并对其进行递减/递增,直到找到具有新 ID 的另一张图片。我认为这比链接中提供的功能要快。

另外,在同一个链接中还有一个思路,就是在当前图片的模型中设置prev_id和next_id。但是在这里我们有同样的问题,我们如何找到它们?即使我们找到它们,在当前图片中存储有关上一张/下一张图片的数据是否正确?这似乎不对,但我相信当您需要访问该数据时它会更方便。

谢谢!

【问题讨论】:

    标签: button yii next


    【解决方案1】:

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

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      相关资源
      最近更新 更多