我想为TYPO3 6.2开发一个扩展程序。
在控制器类中,我创建了一个名为" fetchFeUsersAction"的动作。
此操作从表中的表fe_users
加载一组数据,该表是从模型中的extensionbuilder创建的。
获取存储库中用户的功能如下所示:
public function getFeUsers()
{
/** @var Query $q */
$q = $this->createQuery();
$q->statement('SELECT * from fe_users');
$data = $q->execute(true);
return $data;
}
这很好用。
但现在我想通过此操作将表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');
}
在这里,我想检查电子邮件地址是否已存储在我的表格中。 如果未存储电子邮件地址,则应将其添加到模型中。 但它不起作用。即使有一张空桌子。如果没有这个条件,它就会很好。
答案 0 :(得分:2)
Extbase会在以后将完整数据保存到数据库中。你需要手动坚持我认为,像这样:
"""
Can be replaced with any revertable hash
"""
def my_hash(rem, h, add):
return rem^h^add
"""
Imput
"""
values = np.array([0,1,2,1,2,4,5,6,1,2,1])
searchval = [1,2]
"""
Prepare
"""
sh = 0
vh = 0
ls = len(searchval)
lv = len(values)
for i in range(0, len(searchval)):
vh = my_hash(0, vh, values[i])
sh = my_hash(0, sh, searchval[i])
"""
Find matches
"""
for i in range(0, lv-ls):
if sh == vh:
eq = True
for j in range(0, ls):
if values[i+j] != searchval[j]:
eq = False
break
if eq:
print i
vh = my_hash(values[i], vh, values[i+ls])
目前尚未经过测试,只是从我的扩展程序中复制了它。但在那里我有同样的问题来检查它是否存在。
希望这有点帮助。