将数据添加到 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();
目前未测试,只是从我的扩展程序中复制的。但在那里我遇到了同样的问题来检查它是否存在。
希望对您有所帮助。
我想为 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();
目前未测试,只是从我的扩展程序中复制的。但在那里我遇到了同样的问题来检查它是否存在。
希望对您有所帮助。