在DQL查询中加入两个实体

时间:2014-03-10 23:17:56

标签: mysql sql symfony

我在DQL查询中使用注释有两个具有一对多关系的实体。这两个查询之间有什么区别?

1 -

SELECT p, c FROM AcmeStoreBundle:Product p
    JOIN p.category c
WHERE p.id = :id

2 -

SELECT p, c FROM AcmeStoreBundle:Product p
    JOIN AcmeStoreBundle:Category c
        ON p.categoryid = c.id
WHERE p.id = :id

当我检查基准时,我发现第二种方法花费的时间更少。有人能列出每种方式的优缺点吗?每种方式都有用吗?

1 个答案:

答案 0 :(得分:1)

根据官方documentation,您无法执行第二个查询。我还没有尝试过,但你说它有可能吗?如果是这样,我相信,以这种方式表达关系是不好的做法......

每个ORM都是面向对象的,这样就强调了对象而不是id的需要。您的第二个查询看起来更像是JOIN使用ID的关系数据库的本机查询。