所以我一直在使用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
我不熟悉这个库,但是在查看源代码之后,如果不手动将OR
代码放入where()
调用中,这似乎不容易实现。
根据where
方法的docblock,它将在每个连续的子句前面加上AND
。
这不是世界上最有表现力的代码,但它似乎你必须把你的OR
s手动:
->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)");
(编辑:语法)
有这样一个方法
$where['k1'] = $v1
$where[' ( k2 in (' . $v2 . ') or k3 in (?) )'] = $v3