如何在Doctrine中使用mySQL DB中的变量?

时间:2017-09-12 14:23:56

标签: php sql symfony doctrine

我对学说有问题。我的任务是从其他表中设置带有类别的新产品。类别名称是唯一的。类别和产品表格有关系。当我做:

        $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个品牌,如葡萄酒,伏特加,啤酒。如果我在查询时存在,我不想创建每次品牌名称。 谢谢你的回答。

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有一个创建或更新指令但我不建议这里,因为你需要匹配所有字段。