主义查询语言,两次联接查询 [英] Doctrine Query Language, Two joins query

查看:53
本文介绍了主义查询语言,两次联接查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对dql有问题.我无法正确编写查询.需要将查询重写为dql

I have a problem with dql. I can't write properly query. Need to rewrite the query to dql

              'SELECT 
                    Movie.title, Movie.price, Order.order_data, Order.order_status 
                    FROM 
                    (Order LEFT JOIN Order_has_Movie ON Order.order_id = Order_has_Movie.order_id)
                    INNER JOIN Movie ON Order_has_Movie.movie_id = Movie.movie_id 
                    ORDER BY 
                    title DESC'

一开始,我写了这样的东西:

At the beginning, I wrote something like this:

'SELECT 
                    m.title, m.price, o.order_data, o.order_status 
                    FROM 

我不知道该如何处理.有人可以告诉我,如何写这样的JOINS吗?

And I don't know how to deal with this. Could someone tell me, how to wrtie JOINS like this ?

推荐答案

订单和电影之间存在多对多关联,您可以设置实体来实现这种关系,如下所示

You have a many-to-many association between order and movie you can set your entities to achieve this relation something like below

订单实体

/**
 * @ORM\ManyToMany(targetEntity="Namespace\YourBundle\Entity\Movie", cascade={"persist"})
 * @ORM\JoinTable(name="Order_has_Movie",
 *      joinColumns={@ORM\JoinColumn(name="order_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="movie_id", referencedColumnName="id")}
 * )
 */
private $movies;

电影实体

/**
 *
 * @ORM\ManyToMany(targetEntity="Namespace\YourBundle\Entity\Order", mappedBy="movies")
 */
private $order;

现在,在查询生成器中,您可以将订单实体与以下电影一起加入

Now in query builder you can join your order entity with movie like below

$this->createQueryBuilder('o')
        ->select('o,m')
        ->innerJoin('o.movies','m')
        ->orderBy('m.title','DESC')
        ->getQuery()
        ->getResult();

以上查询将订购及其相关的电影

Above query will orders and its related movies

有关进一步的说明,请参见docs 22.2.19@ManyToMany

For further clarification see docs 22.2.19. @ManyToMany

这篇关于主义查询语言,两次联接查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆