嵌套条件我有一个复选框一种形式,我想创建像查询:使用for循环生成查询
SELECT * FROM table WHERE name = 'name' AND (option = 'check1' OR option = 'check2' OR option = 'check3')
嵌套条件将取决于哪些检查框选择的用户。
我知道还是可以找到关于如何嵌套条件看起来像例子中的唯一方法:
但这只会用equalTo的巢内的静态数量,工作时,我的情况下,将有一个可变金额。 我愿做这样的事情(其中$过滤器是复选框值由用户选择的阵列):
$select->where->StartNest();
foreach($filters['check'] as $check){
$select->where->like('option', '%'.$check.'%');
$select->where->or;
}
$select->where->StopNest();
是这样可能什么?还是有更好的方法来解决这个问题?
非常感谢您关注此问题!
编辑:
这里是我终于实现了它。似乎有点hacky,但它现在正在做这项工作:
$strLiteral = '';
foreach($filters['check'] as $check){
$strLiteral .= "options LIKE '%$check%' OR ";
}
$strLiteral = substr($strLiteral, 0, -4); //remove the final ' OR' from string
$select->where->nest
->literal($strLiteral)
->unnest;
像'的foreach ... {$选择 - > orWhere($ expr-> equalTo( 'A', 'B'));} '应该工作不能告诉你确切的语法,但通常应该是要走的路。 – Sam
感谢您的回复!我的问题是多个或哪些地方需要嵌套。除非我错过了一些东西,那只会导致'WHERE name ='name'AND option ='check1'或option ='check2',但是我正在寻找'WHERE name ='name'AND(option =' check1'OR option ='check2')' – Stu