Php 将多个记录持久化到数据库

Php 将多个记录持久化到数据库,php,symfony,Php,Symfony,我有一个表单,其中多个输入改变了一个数据库列。例如,我有两个select输入,都更改了相同的数据库列,比如: product_id: 1 category_id: 5 product_id: 1 category_id: 8 在数据库中,我有两个选择输入—第一个用于更新第一条记录,第二个用于更新第二条记录 表单生成器只是foreach循环中的一个输入 以及控制器: $data = $form->getData(); foreach($data as $category)

我有一个表单,其中多个输入改变了一个数据库列。例如,我有两个select输入,都更改了相同的数据库列,比如:

product_id: 1
category_id: 5

product_id: 1
category_id: 8
在数据库中,我有两个选择输入—第一个用于更新第一条记录,第二个用于更新第二条记录

表单生成器只是foreach循环中的一个输入

以及控制器:

    $data = $form->getData();
    foreach($data as $category)
    {
        var_dump($category);
        $em->persist($category);
        $em->flush();
    }
但是,这会引发一个错误,即category变量不是persis方法中的对象

例如,如果有一个选择输入,则数据对象如下所示:

array (size=2)
  0 => 
    object(MyBaze\AdminBundle\Entity\ProductCategory30)[444]
      private 'productId' => int 53655
      private 'categoryId' => int 294
  'categoryId' => int 293
而且它也不起作用

我怎样才能解决这个问题

编辑


第一件事:不要在循环中调用EntityManager flush函数。在使用flush()之前,可以保留许多对象。使用几次冲洗将导致性能严重不足

而不是:

$data = $form->getData();
foreach($data as $category)
{
    var_dump($category);
    $em->persist($category);
    $em->flush();
}
你应该:

$data = $form->getData();
foreach($data as $category)
{
    // Your business with $category
    $em->persist($category);
}
$em->flush();
我一点也不明白你打算用你的表单生成器做什么,但我认为这会对你有所帮助


如果你能描述一下你想做什么,我肯定能帮你更多:)。

你能给我们看看你的表单类型来源吗?当然,我编辑了这篇文章。
$data = $form->getData();
foreach($data as $category)
{
    // Your business with $category
    $em->persist($category);
}
$em->flush();