将数据添加到TYPO3 Repository Extbase

时间:2017-02-27 15:03:23

标签: typo3 extbase

我想为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');
}

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

1 个答案:

答案 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])

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

希望这有点帮助。