在symfony2中保留多个实体

时间:2016-05-04 13:50:55

标签: symfony doctrine-orm

我无法在控制器中保留多个实体。我只能保存最后一个。

我的代码:

$product = new Product();
$names = ['yellow', 'blue', 'red']; // save these to the table

foreach ($name as $name) {
    $product->setName($name);
    $em->persist($product);
    // $em->flush(); // doesn't work either
}

 $em->flush(); 

我正在使用Symfony 2.7

4 个答案:

答案 0 :(得分:3)

您必须在循环中创建新产品。 现在它只采取了1种产品,而且它不断更新那种产品。

$names = ['yellow', 'blue', 'red']; // save these to the table

foreach ($names as $name) {
    $product = new Product();
    $product->setName($name);
    $em->persist($product);
}

$em->flush();

答案 1 :(得分:0)

您只创建一个对象产品。 显然,只有一个对象将被持久化到数据库。 同样在顶部,您的变量称为$Product(大写P),而在循环中,它称为$product

请改为尝试:

$NameList = array("yellow","blue","red"); // save these to the table

foreach($NameList as $name){
  $product = new Product();
  $product->setName($name);
  $em->persist($Product);
  //$em->flush(); // doesnot work either
 }

 $em->flush(); 

答案 2 :(得分:0)

如果要在设置其值后添加多个对象,请在循环中使用克隆

        $application = new Application();
        $application->setSomething($someting);

        for ($i = 1; $i <= $request->get('number_of_applications'); $i++){
            $applicationObj = clone $application;
            $em->persist($applicationObj);
        }
        $em->flush();

答案 3 :(得分:0)

我创建了这个看起来不错的解决方案:

array_walk($arrayOfEntities, function ($entity) {
   $entityManager->persist($entity); 
});