1

显然活动记录不能处理临时表——在我看来是巨大的疏忽。(参考:Codeigniter 2 活动记录 — 如何创建临时表以应用第二个排序顺序?

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

这是我的查询:

    $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) ,我如何按 asc/desc 顺序按 site_rating 对结果对象进行排序?非常感谢任何帮助。

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

4

1 回答 1

0
 $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();
于 2012-09-21T13:50:18.167 回答