![](/img/trans.png)
[英]Database Connection default not configured in Typo3 v8 UnitTest when testing ViewHelper
[英]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.