Codeigniter Active记录复杂的查询

> * 1。 我需要写在活动记录*

我需要加入这3个表格,但加入的条件非常非常有选择性

$this->db->select(name);
$this->db->from('table0');
$this->db->join('table1','(table1.id=0 AND table0.feild1 = table1.feild1) OR (table1.id=1 AND table0.feild2 = table1.feild2)') // <--- how to write this is my question

我可以做一个简单的连接,但主要的问题是实现上面提到的连接的条件。这也是非常,非常非常小的一部分! 大的查询,所以我真的不能改回原生的SQL查询,如:

$this->db->query('//entire sql query'); //cant do this, need to write ACTIVE RECORDS

当我写活动记录时,萤火虫会给我一个错误,说:

你的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,以找到在')OR附近使用的正确语法

有什么建议么 ?


说实话,我不知道这是可能的。 CI不使用真正的活动记录,因此每种方法都有非常严格的参数,而且我没有看到任何可以被诱骗执行所需任务的东西。

我想尝试的是重新编写你的查询:

$this->db->select(name);
$this->db->from('table0');
$this->db->join('table1','(table1.id=0 AND table0.feild1 = table1.feild1)', LEFT);
$this->db->join('table1','(table1.id=1 AND table0.feild2 = table1.feild2)', LEFT);
$this->db->where('(table1.id=0 AND table0.feild1 = table1.feild1)');
$this->db->or_where('(table1.id=1 AND table0.feild2 = table1.feild2)');

我相信这个查询会返回正确的值,但你一定要彻底测试它。 希望这至少能让你朝着正确的方向前进。

链接地址: http://www.djcxy.com/p/43775.html

上一篇: Codeigniter Active records complex query

下一篇: CodeIgniter Active Record: Debugging without running SQL