Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在原则中使用mySQL数据库中的变量?_Php_Sql_Symfony_Doctrine - Fatal编程技术网

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指令,但我不建议在这里使用,因为您需要匹配所有字段。

尝试测试品牌是否存在,如果存在,请使用它,如果不创建,尽管在条令中有一些方法,而不是如果。不要忘记条令映射。