Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php TYPO3 v8 QueryBuilder在语句中的位置_Php_Sql_Doctrine_Typo3 - Fatal编程技术网

Php TYPO3 v8 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

我正在尝试为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
->更新($table)
->集合('隐藏',0)
->其中($queryBuilder->expr()->in(
“uid”,
$queryBuilder->createNamedParameter($itemUids,Connection::PARAM\u INT\u数组)
)
->执行();

有关详细信息,请参阅
ExpressionBuilder
文档中的。

我在连接类中再也找不到PARAM_INT_数组了?这里发生了什么变化?它仍然在Type3
Connection
中定义,它扩展了原则DBAL
Connection
,请参阅