FluentPDO似乎找不到做OR子句的方法

时间:2015-09-06 11:09:41

标签: php mysql sql

所以我一直在使用FluentPDO,但我似乎无法找到一种做OR子句的方法,自动添加AND的地方我不会看到绕过它。

这是我需要创建的SQL语句的类型。

SELECT *
FROM `items` 
WHERE `item_var` LIKE '%test%' 
OR `item_text` LIKE '%test%' 
OR `item_int` LIKE '%test%' 
OR `item_select` LIKE '%test%' 
ORDER BY row_id

2 个答案:

答案 0 :(得分:1)

我对图书馆不熟悉,但在查看来源后,如果不将OR代码放入where()来电,这似乎不太可能手动

根据where method's docblock,它会在每个连续的子句前加AND

它不是世界上最具表现力的代码,但似乎您必须手动设置OR

->where('(item_text LIKE "%test%" OR item_int LIKE "%test%" OR item_select LIKE "%test%")')

只要您只使用OR,您就可以通过将它们放入数组并implode()来清理它们。也许这样的事情会起作用:

$conditions = [
    'item_text LIKE "%test%"',
    'item_int LIKE "%test%"',
    'item_select LIKE "%test%"',
];

$orWhere = implode(" OR ", $conditions);
$query = $fpdo->from('items')->where("($orWhere)");

编辑:语法)

答案 1 :(得分:1)

有这样的方法

$where['k1'] = $v1
$where[' ( k2 in (' . $v2 . ') or k3 in (?) )'] = $v3