将数据添加到 TYPO3 存储库 Extbase

Add data to TYPO3 Repository Extbase

我想为 TYPO3 6.2 开发一个扩展。

在控制器 class 中,我创建了一个名为 "fetchFeUsersAction" 的动作。 此操作从 table 中的 table fe_users 加载一组数据,这些数据是从模型的 extensionbuilder 创建的。

获取存储库中用户的函数如下所示:

    public function getFeUsers()
{
    /** @var Query $q */
    $q = $this->createQuery();
    $q->statement('SELECT * from fe_users');
    $data = $q->execute(true);

    return $data;
}

这很好用。

但现在我想通过以下操作将 table fe_users 的结果存储在我的模型中:

public function fetchFeUsersAction()
{
    $data = $this->adressRepo->getFeUsers();
    foreach ($data as $feuser) {
        /** @var Adresse $address */
        $address = $this->objectManager->get(Adresse::class);

        $q= $this->adressRepo->createQuery();
        $q->matching(contains('email', $feuser['email']));
        $contain= $q->execute();

        if($contain==NULL){
        $address->setEmail($feuser['email']);
        $this->adressRepo->add($address);
    }

    }
    $this->redirect('list');
}

在这里我想检查电子邮件地址是否已经存储在我的 table 中。 如果未存储电子邮件地址,则应将其添加到模型中。 但它不起作用。即使是空 table。没有条件它工作得很好。

Extbase 稍后将完整的数据持久化到数据库中。我认为你需要手动坚持,像这样:

/** @var \TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager */
$persistenceManager = GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager::class);
$persistenceManager->persistAll();

目前未测试,只是从我的扩展程序中复制的。但在那里我遇到了同样的问题来检查它是否存在。

希望对您有所帮助。