我正在尝试使用codeigniter从mysql数据库中提取数据并点燃数据表。我没有麻烦用单个where子句拉取连接查询,但是当我尝试添加WHERE x OR y时,我似乎无法使其工作。以下是可以正常使用的基本代码:
$table = 'test_base';
$table2 = 'lab';
$this->datatables->select('test_base.idlab');
$this->datatables->from($table);
$this->datatables->join($table2, 'test_base.idlab = lab.idlab');
$this->datatables->where('lab.idaccount',$idaccount);
如果我想在查询中添加多个条件,我可以从manual看到我可以在数组中放置多个条件,但这似乎只能执行AND,而不是OR语句。
然后我看到我可以使用以下内容创建自己的SQL查询:
$this->datatables->where('column != "string"');
所以,我试过这个:
$this->datatables->where("`lab`.`idaccount`= $idaccount OR `lab`.`idlab` = 0");
SELECT `test_base`.`idlab`
FROM (`test_base`)
JOIN `lab` ON `test_base`.`idlab` = `lab`.`idlab`
WHERE `lab`.`idaccount`=` 124 OR `lab`.`idlab` = 0
ORDER BY `idtest` asc
问题是在WHERE`lab`中有一个额外的(`)。在一个地方,我不确定如何摆脱它。
答案 0 :(得分:1)
正如@Ehecatl建议的那样,我通过在()中输入完整的查询来实现它。 CodeIgniter网站上或我能找到的任何其他地方都没有示例。 CodeIgniter还是新手,所以也许这对其他人也有帮助。
解决方案是将查询字符串放在$ this-> datatables-> where();并删除所有单引号。
$this->datatables->where("lab.idaccount = $idaccount OR lab.idlab = 0");