簡體   English   中英

TYPO3 v8 QueryBuilder WHERE IN語句

[英]TYPO3 v8 QueryBuilder WHERE IN statement

我正在嘗試對QueryBuilder使用WHERE IN語句。 我想打電話

UPDATE tx_test SET hidden = 0 WHERE uid IN (1,2,3,4) 

我的代碼:

    public function makeItemsVisible($itemsToShow)
    {
        $itemUids = implode(",", $itemsToShow);
        $table = 'tx_test';
        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
            ->getQueryBuilderForTable($table);
        $queryBuilder
            ->update($table)
            ->set('hidden', "0")
            ->where('uid IN (:uids)')
            ->setParameter('uids', $itemUids )
            ->execute();
    }

$ itemUids 1,2,3,4是正確的,但是該語句僅更新數據庫中的第一條記錄。 我錯過了什么嗎?

您應該使用表達式構建器和API添加命名參數:

$queryBuilder
  ->update($table)
  ->set('hidden', 0)
  ->where($queryBuilder->expr()->in(
      'uid',
      $queryBuilder->createNamedParameter($itemUids, Connection::PARAM_INT_ARRAY)
  )
  ->execute();

有關詳細信息,請參見ExpressionBuilder文檔中的“ 比較”部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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