Я нахожусь в середине обновления старого сайта. Одной из вещей, которые я делаю, является переписывание запросов к базе данных, потому что я изменил структуру базы данных, чтобы сделать ее более гибкой и настраиваемой от администратора.
Ранее я использовал следующий запрос (и многие другие), которые полагаются на временную таблицу:
$query = $this->db->query("SELECT * FROM (SELECT * FROM Links WHERE Cat LIKE ('$c') AND Type LIKE ('%$x%') LIMIT $s, $l) AS T ORDER BY $sort $o");
Поскольку запросы стали более сложными и теперь связаны с большим количеством объединений, я решил использовать активный синтаксис записи, чтобы сделать их более удобными для чтения. Проблема в том, что я не могу найти информацию о том, как сделать временную таблицу для применения второй сортировки к данным с использованием активной записи; это возможно?
Вот мой новый запрос:
$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); // up to here I want to store as a temporary table then apply next order //->order_by($sort, $o); - ideally I want to apply a second order like this $result = $this->db->get();
Я хотел бы применить «порядок по» дважды, но это не сработает – активная запись – это не тот кливер (или более похожий был бы двусмысленным), как я могу это сделать в активной записи?
Буду признателен за любую оказанную помощь. В противном случае подход к активной записи может предложить, как я могу применить сортировку к объекту результата?