我对学说有问题。我的任务是从其他表中设置带有类别的新产品。类别名称是唯一的。类别和产品表格有关系。当我做:
$brand = new Category();
$brand->setBrand('Beers');
$beer = new Product();
$beer->setModel('Bavaria');
$beer->setBrand($brand);
$em = $this->getDoctrine()->getManager();
$em->persist($brand);
$em->persist($beer);
$em->flush();
一切都很好。但是当我用其他型号名称(p.ex.Heineken)进行此查询时,我有重复的品牌名称。我希望有1个品牌,如葡萄酒,伏特加,啤酒。如果我在查询时存在,我不想创建每次品牌名称。 谢谢你的回答。
答案 0 :(得分:1)
如果您想让用户在类别中进行选择,您可以使用带有EntityType的表单。
如果您想让用户键入名称并创建类别(如果该类别不存在),您可以这样做:
$newBrand = 'userInput';
$em = $this->getDoctrine()->getManager();
$category = $em->getRepository('YouBundle:YouEntity')->findOneBy(array('brand' => $newBrand));
if ($category == null) {
$category = new Category();
$category->setBrand($newBrand);
$em->persist($category);
}
$beer = new Product();
$beer->setModel('Bavaria');
$beer->setBrand($category); // If you need to use $category in you view don't forget $category->addProduct($beer);
$em->persist($beer);
$em->flush();
PS:mySQL有一个创建或更新指令但我不建议这里,因为你需要匹配所有字段。