![](/img/trans.png)
[英]ZF2 Zend\Db Insert/Update Using Mysql Expression (Zend\Db\Sql\Expression?)
[英]ZF2 - Zend\Db\Sql\Sql - expression within expression
假設我有一個簡單的查找表,其中包含兩列,即id和name。 我想從表中為一組給定的名稱選擇所有ID。 另外,我希望名稱列的比較不區分大小寫。
例如,我有一個小寫名稱“ apple”,“ orange”,“ banana”的數組,並想執行類似以下的查詢:
SELECT id FROM lookup_table WHERE LOWER(name) IN ('apple','orange','banana').
到目前為止,我已經使用以下代碼創建該語句並正確綁定我的名稱數組:
$sql = new Sql($this->adapter);
*$select = $sql->select();*
$select->from('lookup_table')
->columns(array('id'))
->where(new \Zend\Db\Sql\Predicate\In('name',array('apple','orange','banana')));
$result = $sql->prepareStatementForSqlObject($select)->execute();
$returnArray = array();
foreach ($result as $r) {
$returnArray[] = $r['id'];
}
return $returnArray;
我不知道怎么做是將LOWER()函數包裝在where子句中的name列周圍。 我認為您不能將表達式傳遞給Zend \\ Db \\ Sql \\ Predicate \\ In的標識符部分。
有什么想法嗎?
:wq
您可以使用類似
$select->where->expression('lower(name) IN (?)', array('apple','orange','banana'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.