嵌套條件我有一個複選框一種形式,我想創建像查詢:使用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