Codeigniter: Объединение activeRecord с ручными запросами? - PullRequest
4 голосов
/ 06 июня 2010

Я немного об активных записях и ручных запросах в Codeigniter. ActiveRecord великолепен, когда речь идет о стандартных запросах, и время разработки действительно невелико.

Однако, когда возникает необходимость добавить к запросам некоторую сложность, с ActiveRecord становится довольно сложно работать. Подзапросы или сложные объединения вызывают по крайней мере много головной боли.

Поскольку текущий вызов $ this-> db-> query немедленно выполняет заданный запрос, его нельзя объединить с обычными вызовами activeRecord.

Итак, что я могу сделать, чтобы объединить два метода?

Пример того, чего я хочу достичь:

$this->db->select('title, content, date');
$this->db->from('mytable');
$this->db->manual('UNION'); // My own idea of db-call that appends UNION to the query
$this->db->select('title, content, date');
$this->db->from('mytable2');
$query = $this->db->get();

Спасибо!

1 Ответ

4 голосов
/ 08 июня 2010

возможно эта ссылка поможет: подзапросы активной записи

Обновление ---

было еще одно обсуждение о Союзе с активной записью Codeigniter . И я согласен с ответом там.

Но с некоторыми подзапросами мы можем комбинировать активную запись с ручными запросами. Пример:

// #1 SubQueries no.1 -------------------------------------------

$this->db->select('title, content, date');
$this->db->from('mytable');
$query = $this->db->get();
$subQuery1 = $this->db->_compile_select();

$this->db->_reset_select();

// #2 SubQueries no.2 -------------------------------------------

$this->db->select('title, content, date');
$this->db->from('mytable2');
$query = $this->db->get();
$subQuery2 = $this->db->_compile_select();

$this->db->_reset_select();

// #3 Union with Simple Manual Queries --------------------------

$this->db->query("select * from ($subQuery1 UNION $subQuery2) as unionTable");

// #3 (alternative) Union with another Active Record ------------

$this->db->from("($subQuery1 UNION $subQuery2)");
$this->db->get();

nb: извините, я не тестировал этот скрипт, надеюсь, он работает и полезен ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...