2014-08-28 24 views
0

我试图从数据库中使用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`.`idaccount` =`< - 在这里,我不知道如何摆脱它。

+1

你为什么不直接尝试使用$ this-> db-> query($ your_query_string)查询sql查询; – Ehecatl 2014-09-03 02:24:51

+0

我终于找到了可以解决它的另一个地方,但目前有一个工作示例。我发布这个以防它可能帮助其他人。 $ this-> db-> where('string_query',NULL,FALSE); FALSE可以防止CI将反作用线用于保护表格。在自定义字符串下找到:https://ellislab.com/codeigniter/user-guide/database/active_record.html – nwolybug 2014-09-04 04:56:14

回答

1

正如@Ehecatl所示,我通过将完整的查询输入到()中来解决问题。 CodeIgniter网站上没有任何例子或我能找到的其他地方。对于CodeIgniter来说还是新手,所以也许这也会对其他人有所帮助。解决方法是将查询字符串放在$ this-> datatables-> where();}中。并删除所有单引号。

$this->datatables->where("lab.idaccount = $idaccount OR lab.idlab = 0");