Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 Symfony/QueryBuilder:“;myEntityAlias.myEntity.id“<;-可能的_Php_Mysql_Symfony_Orm_Doctrine - Fatal编程技术网

Php Symfony/QueryBuilder:“;myEntityAlias.myEntity.id“<;-可能的

Php Symfony/QueryBuilder:“;myEntityAlias.myEntity.id“<;-可能的,php,mysql,symfony,orm,doctrine,Php,Mysql,Symfony,Orm,Doctrine,简言之: 我想使用类似于s.item.id的东西启动如下SQL查询。这可能吗 实体: class Set { // ... /** * @ORM\ManyToOne(targetEntity="myBundle\Entity\Item") * @ORM\JoinColumn(name="item_id", referencedColumnName="id") */ protected $item; // ... } 存储库 $

简言之:

我想使用类似于
s.item.id
的东西启动如下SQL查询。这可能吗

实体

class Set {
    // ...

    /**
     * @ORM\ManyToOne(targetEntity="myBundle\Entity\Item")
     * @ORM\JoinColumn(name="item_id", referencedColumnName="id")
     */
    protected $item;

    // ...
}

存储库

$sql = '
    SELECT i.id, s.name 
      FROM mybundle:Item i, mybundle:Set s 
     WHERE s.item.id = i.id <---------------------- !!!
';

return $this->getEntityManager()
            ->createQueryBuilder($sql)
            ->getResult();
$sql=>
选择i.id、s.name
来自mybundle:Item i,mybundle:Set s
其中s.item.id=i.id您尝试过吗?
我更喜欢像这样使用查询生成器函数。
像这样的东西可能适合你:

$qb = $em->createQueryBuilder();
$qb->select('i.id, s.name')
   ->from('mybundle:Item', 'i')
   ->leftJoin('mybundle:Set', 's', 'WITH', 's.item_id = i.id');

编辑:SQL查询应该类似于
SELECT i.id,s.name FROM items i LEFT JOIN set s ON s.item_id=i.id
,我已经编辑了我的答案。

是的,这是可能的,但遗憾的是,您将不得不花一点时间学习Doctrine 2如何构建查询。事实上,您发布的代码甚至无法正常工作。在那里你需要一个左连接。
$qb = $em->createQueryBuilder();
$qb->select('i.id, s.name')
   ->from('mybundle:Item', 'i')
   ->leftJoin('mybundle:Set', 's', 'WITH', 's.item_id = i.id');