Php 条令查询语言,双连接查询

Php 条令查询语言,双连接查询,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,我对dql有一个问题。我不能正确地写查询。需要将查询重写为dql 一开始,我写了这样的东西: 我不知道该怎么处理。有人能告诉我,如何像这样创建连接吗?在订单和电影之间存在多对多关联,您可以设置实体来实现这种关系,如下所示 $this->createQueryBuilder('o') ->select('o,m') ->innerJoin('o.movies','m') ->orderBy('m.title','DESC')

我对dql有一个问题。我不能正确地写查询。需要将查询重写为dql

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


我不知道该怎么处理。有人能告诉我,如何像这样创建连接吗?

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

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

电影实体

现在,在查询生成器中,您可以将订单实体与电影连接起来,如下所示

$this->createQueryBuilder('o')
        ->select('o,m')
        ->innerJoin('o.movies','m')
        ->orderBy('m.title','DESC')
        ->getQuery()
        ->getResult();
以上查询将显示订单及其相关电影

有关进一步澄清,请参见文件

/**
 * @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;
$this->createQueryBuilder('o')
        ->select('o,m')
        ->innerJoin('o.movies','m')
        ->orderBy('m.title','DESC')
        ->getQuery()
        ->getResult();