Php 如何在原则中使用mySQL数据库中的变量?
我对教义有异议。我的任务是使用其他表中的类别设置新产品。类别名称是唯一的。类别和产品表是一对一的关系。当我作出以下决定时:Php 如何在原则中使用mySQL数据库中的变量?,php,sql,symfony,doctrine,Php,Sql,Symfony,Doctrine,我对教义有异议。我的任务是使用其他表中的类别设置新产品。类别名称是唯一的。类别和产品表是一对一的关系。当我作出以下决定时: $brand = new Category(); $brand->setBrand('Beers'); $beer = new Product(); $beer->setModel('Bavaria'); $beer->setBrand($brand); $e
$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();
一切都好。但是,当我用其他型号的名称(喜力)进行此查询时,我复制了品牌名称。我想要一个品牌,比如葡萄酒、伏特加、啤酒。我不想每次查询时都创建一个品牌名称,如果它存在的话。
感谢您的回答。如果您想让用户在类别中进行选择,您可以使用带有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有一个create或update指令,但我不建议在这里使用,因为您需要匹配所有字段。尝试测试品牌是否存在,如果存在,请使用它,如果不创建,尽管在条令中有一些方法,而不是如果。不要忘记条令映射。