我无法在控制器中保留多个实体。我只能保存最后一个。
我的代码:
$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
答案 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);
});