首页 文章

TYPO3扩展存储库截断查询

提问于
浏览
3

我需要通过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;
}

执行此函数时,我收到以下错误:

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

执行SELECT和执行TRUNCATE语句有什么区别?为什么一个工作而另一个不工作?

2 回答

  • -1

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

    $GLOBALS['TYPO3_DB']->exec_TRUNCATEquery('table');
    

    请记住,extbase可能不知道这个truncate,并且它可能仍然在缓存中有一些对象 .

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

  • 4

    执行TRUNCATE时尝试删除 $query->getQuerySettings()->setReturnRawQueryResult(TRUE) 调用 . 不幸的是,我没有't have a reasoning though my best guess would be that the TRUNCATE call doesn' t返回任何结果 .

相关问题