Php TYPO3 v8 QueryBuilder在语句中的位置
我正在尝试为QueryBuilder使用Php TYPO3 v8 QueryBuilder在语句中的位置,php,sql,doctrine,typo3,Php,Sql,Doctrine,Typo3,我正在尝试为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'; $queryBuil
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
->更新($table)
->集合('隐藏',0)
->其中($queryBuilder->expr()->in(
“uid”,
$queryBuilder->createNamedParameter($itemUids,Connection::PARAM\u INT\u数组)
)
->执行();
有关详细信息,请参阅
ExpressionBuilder
文档中的。我在连接类中再也找不到PARAM_INT_数组了?这里发生了什么变化?它仍然在Type3Connection
中定义,它扩展了原则DBALConnection
,请参阅