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');