我需要通过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;
}
这很有效。
然后有清除数据库表的功能,它看起来像这样:
public function updateProductPermissions($submitArray) {
$query = $this->createQuery();
$query->getQuerySettings()->setReturnRawQueryResult(TRUE);
$query->statement('TRUNCATE TABLE tx_chiliproducts_domain_model_permission')->execute();
return true;
}
执行此函数时,出现以下错误:
致命错误:在非对象上调用成员函数fetch_assoc() 在 /srv/globalroot/typo3_src-6.1.1/typo3/sysext/core/Classes/Database/DatabaseConnection.php 在第1029行
执行SELECT和执行TRUNCATE语句之间的区别是什么?为什么一个工作而另一个不工作?
答案 0 :(得分:4)
我不确定你是否可以截断extbase持久层。如果您想让生活更轻松,只需使用普通的TYPO3 CMS数据库类:
$GLOBALS['TYPO3_DB']->exec_TRUNCATEquery('table');
请记住,extbase可能不知道这个truncate,并且它可能仍然在缓存中有一些对象。
API方式是调用$repository->removeAll()
。