TYPO3 扩展库截断查询

xxx*_*xxx 3 php sql typo3 extbase

我需要通过我的 TYPO3 扩展的存储库清除 (TRUNCATE) 数据库表。我已经有各种有效的 SELECT 查询。它们看起来像这样:

public function getUsergroups() {

    $query = $this->createQuery();
    $query->getQuerySettings()->setReturnRawQueryResult(TRUE);

    $query->statement('SELECT * FROM fe_groups WHERE hidden=0 AND deleted=0');

    $result = $query->execute();

    return $result;
}
Run Code Online (Sandbox Code Playgroud)

这有效。

然后是清除数据库表的功​​能,看起来是这样的:

public function updateProductPermissions($submitArray) {
    $query = $this->createQuery();
    $query->getQuerySettings()->setReturnRawQueryResult(TRUE);

    $query->statement('TRUNCATE TABLE tx_chiliproducts_domain_model_permission')->execute();

    return true;
}
Run Code Online (Sandbox Code Playgroud)

执行此函数时,出现以下错误:

致命错误:在第 1029 行的 /srv/globalroot/typo3_src-6.1.1/typo3/sysext/core/Classes/Database/DatabaseConnection.php 中的非对象上调用成员函数 fetch_assoc()

执行 SELECT 和执行 TRUNCATE 语句有什么区别?为什么一种有效而另一种无效?

pga*_*mpe 6

我不确定您是否可以通过 extbase 持久层进行截断。如果你想让你的生活更轻松,只需使用普通的 TYPO3 CMS 数据库类:

$GLOBALS['TYPO3_DB']->exec_TRUNCATEquery('table');
Run Code Online (Sandbox Code Playgroud)

请记住,extbase 可能不知道此截断,并且它可能在缓存中仍有一些对象。

API 方法是调用$repository->removeAll().