【问题标题】:Codeigniter - How can I sort my database result object (sorting php objects)Codeigniter - 如何对我的数据库结果对象进行排序(对 php 对象进行排序)
【发布时间】:2012-09-21 13:48:23
【问题描述】:

显然活动记录无法处理临时表 - 我认为这是巨大的疏忽。 (参考:Codeigniter 2 active record — How do I create temporary table to apply second sort order?

鉴于此,我正在寻找一种方法来对我的查询产生的结果对象进行排序。

这是我的查询:

    $this->db
                ->select('*')
                ->from('item_categories')
                ->where('item_categories.cat_id', $c)
                ->or_where('item_categories.parent_id', $c)
                ->or_where('item_categories.gparent_id', $c)
                ->join('item_categories_rel', 'item_categories_rel.cat_id = item_categories.cat_id', 'right')
                ->join('item_entries', 'item_entries.item_id = item_categories_rel.item_id','right')
                ->join('ratings_total', 'ratings_total.item_id = item_entries.item_id')
                ->order_by("item_name", "asc")
                ->limit($l, $s);
            $result = $this->db->get();

例如,我的结果包含一个名为 site_rating 的字段,其类型为 decimal(2,1) ,我如何按 site_rating 按 asc/desc 顺序对结果对象进行排序?非常感谢任何帮助。

需要明确的是,我不想更改当前顺序,我想对第一个结果集应用第二个排序顺序 - 我发现我无法对活动记录执行此操作,因此希望通过对结果进行排序来执行此操作如果可能,对象。

【问题讨论】:

    标签: php database codeigniter object


    【解决方案1】:
     $this->db
                    ->select('*')
                    ->from('item_categories')
                    ->where('item_categories.cat_id', $c)
                    ->or_where('item_categories.parent_id', $c)
                    ->or_where('item_categories.gparent_id', $c)
                    ->join('item_categories_rel', 'item_categories_rel.cat_id = item_categories.cat_id', 'right')
                    ->join('item_entries', 'item_entries.item_id = item_categories_rel.item_id','right')
                    ->join('ratings_total', 'ratings_total.item_id = item_entries.item_id')
                    ->order_by("site_rating", "DESC")
                    ->limit($l, $s);
                $result = $this->db->get();
    

    【讨论】:

    • 抱歉,我的问题可能不清楚。我需要按原样对它们进行排序,然后我需要应用第二次排序。因此,例如,我的原始查询按项目名称获取前 50 个结果,然后我想按它们的评级对这些结果进行排序
    • 您能否在 sql 上制作一个示例数据库并使用几个项目,然后我们可以使用您的数据库为您提供正确的结果。
    猜你喜欢
    • 2013-12-05
    • 2013-12-06
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2011-08-18
    相关资源
    最近更新 更多