1

どうやらアクティブレコードは一時テーブルを処理できません-私の意見では大きな見落としです。(参照:Codeigniter 2アクティブレコード— 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();

たとえば、私の結果には、decimal(2,1)型のsite_ratingというフィールドが含まれていますが、結果オブジェクトをsite_ratingでasc / desc順に並べ替えるにはどうすればよいですか?どんな助けでも大歓迎です。

明確にするために、現在の順序を変更したくないので、最初の結果セットに2番目の並べ替え順序を適用したい-アクティブレコードではこれを実行できないことがわかったので、可能であれば結果オブジェクトを並べ替えて実行したいと思います。

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 に答える