Php 如何使用带有foreach循环的Symfony formbuilder存储内容?

Php 如何使用带有foreach循环的Symfony formbuilder存储内容?,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,这是我的阵列$dataRep: 我喜欢使用Symfony formbuilder在数据库中存储数据: $dataEntity= new Data::class(); foreach ($dataRep as $dataField) { $dataEntity->setContent("something"); } $this->em->persist($dataEntity); $this->em->flush(); 但数据库中只存储了一个条目,而不是预

这是我的阵列$dataRep:

我喜欢使用Symfony formbuilder在数据库中存储数据:

$dataEntity= new Data::class();

foreach ($dataRep as $dataField) {
    $dataEntity->setContent("something");
}
$this->em->persist($dataEntity);
$this->em->flush();

但数据库中只存储了一个条目,而不是预期的4个条目。

将代码移动到循环中,以便在每次迭代中运行:

foreach ($dataRep as $dataField) {
    $dataEntity = new Data();

    $dataEntity->setContent("something");
    $this->em->persist($dataEntity);
}

$this->em->flush();

注意:您还有一个语法错误,我刚刚注意到新的Data::class。

您正在重置同一数据类上的内容,然后将其存储。 只需了解整个过程:

foreach ($dataRep as $dataField) {
    $dataEntity = new Data();
    $dataEntity->setContent("something");
    $this->em->persist($dataEntity);
}
$this->em->flush();

$this->em->flush;可以使用一次,不是吗?是不是新数据::class a语法错误?@Darragh是的,它是。@yivi哦,对不起,是的,应该是新数据;潮水;应在foreach之后,避免对每个实体进行数据库查询,并进行一次全局查询以同时保存所有实体。就像在@Script47中一样answer@Etshy我知道这是最好的做法。我没有为了保留我原来的解决方案而更改它,因为他更改了它,并且两者都是相同的。不管怎样,为了提高答案,我已经修改了它,尽管是相同答案的2倍。没有看到其他答案也被编辑了,对不起。但我认为最好是向以后的读者展示最佳实践代码,即使它是重复的。因此,感谢您编辑您的答案。
foreach ($dataRep as $dataField) {
    $dataEntity = new Data();
    $dataEntity->setContent("something");
    $this->em->persist($dataEntity);
}
$this->em->flush();