2015-09-06 127 views
1

所以我一直在使用FluentPDO了不少,但我似乎無法找到做or子句的方式,其中汽車增加了AND和我不沒有看到它的方式。FluentPDO似乎無法找到這樣的方式或條款

這是我需要創建的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 
+0

如果寫類似'where字段=?或field1 =?或...',然後填寫佔位符? –

回答

1

我不熟悉的圖書館,但尋找到根源後,它似乎並不像這是容易實現,而無需手動將您OR代碼到where()通話。

根據該where method's docblock,它會在前面加上一個AND每個連續子句。

這不是最傳神的代碼在世界上,但現在看來,你將不得不把手動您OR S:

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

只要您只使用OR,你也許能夠清理它將它們放入一個數組並將其放入數組中。也許,像這樣的工作:

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

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

編輯:語法)

+0

甚至有[功能請求](https://github.com/lichtner/fluentpdo/issues/113)。 –

+0

我現在就測試一下..沒想到這是可能的.. –

+0

工作很好,現在我不認爲「%test%」會逃脫人物,所以我應該在將值放入那裏 ? –

相關問題