Codeigniter:将activeRecord与手动查询相结合?

时间:2010-06-06 18:10:03

标签: php mysql database activerecord codeigniter

我对Codeigniter中的activerecord与手动查询有点关系。 ActiveRecord非常棒,只关注标准查询并且开发时间非常短。

但是,当需要为查询添加一些复杂性时,ActiveRecord会变得非常复杂。子查询或复杂连接至少给我带来了很多麻烦。

由于当前“$ this-> db-> query”-call立即执行set查询,因此无法与正常的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 个答案:

答案 0 :(得分:4)

也许这个链接会有所帮助:active record subqueries

更新---

还有另一个关于Union with Codeigniter Active Record的讨论。我同意那里的答案。

但是对于一些子查询,我们可以将活动记录与手动查询相结合。例如:

// #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:对不起,我没有测试过这个脚本,希望它有用并且有用..