Php DQL子查询问题

Php DQL子查询问题,php,mysql,symfony,doctrine-orm,doctrine,Php,Mysql,Symfony,Doctrine Orm,Doctrine,我试图从一个表o中选择*,其中供应商就是我传递的内容。这是在一个条令存储库的上下文中。然后,我想运行一个子查询并从AppBundle:PriceOption中选择*,其中p.offer是o。运行此代码时,我收到一个QueryException: public function getVendorFeaturedDeals(Vendor $vendor){ $purchaseOptions = $this-> getEntityManager() -&

我试图从一个表o中选择*,其中供应商就是我传递的内容。这是在一个条令存储库的上下文中。然后,我想运行一个子查询并从AppBundle:PriceOption中选择*,其中p.offer是o。运行此代码时,我收到一个QueryException:

public function getVendorFeaturedDeals(Vendor $vendor){
    $purchaseOptions = $this->
        getEntityManager()
        ->createQueryBuilder()
        ->from('AppBundle:PriceOption', 'p')
            ->innerJoin('p.offer', 'o')
        ->getDQL();


    $query = $this->createQueryBuilder('o');
    return $query
        ->where('o.vendor = :vendor')
        ->addSelect(sprintf('(%s)', $purchaseOptions))
        ->setParameter(':vendor', $vendor)
        ->getQuery()
        ->execute();
}
以下是错误:AppBundle\Tests\Service\VendorServiceTest::testGetVendorFeaturedDeals 条令\ORM\Query\QueryException:[语法错误]第0行,第18列:错误:条令导致意外的“发件人”\ORM\Query\QueryException:选择o,从AppBundle中选择:价格选项p内部连接p.offer o来自AppBundle\Entity\offer o其中o.vendor=:vendor


任何帮助都将不胜感激,谢谢

您应该将查询修改为:

$purchaseOptions = $this->
    getEntityManager()
    ->createQueryBuilder()
    ->select(['p', 'o'])
    ->from('AppBundle:PriceOption', 'p')
        ->innerJoin('p.offer', 'o')
    ->getDQL();

你看到错误了吗?我指的是“从中选择”部分