簡體   English   中英

ZF2-Zend \\ Db \\ Sql \\ Sql-表達式內的表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM