I'm trying to create this SQL query in a doctrine QueryBuilder
SELECT count(DISTINCT d.id)
FROM `discount` d
JOIN `order_discount_relationships` od ON od.discount_id = d.id
JOIN `orders` o ON o.id = od.order_id
WHERE o.status = 3
My two entity are those:
/**
* @ORM\Table
*/
class Discount
{
// ...
}
And
/**
* @ORM\Table
*/
class Order
{
// ...
/**
* @var Discount[]|ArrayCollection
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Discount")
* @ORM\OrderBy({"id" = "ASC"})
* @ORM\JoinTable(name="order_discount_relationships",
* joinColumns={@ORM\JoinColumn(name="order_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="discount_id", referencedColumnName="id")}
* )
*/
private $discounts;
// ...
}
I'd like to count Discount which are already used (in a order with status 3)
$qb = $this->createQueryBuilder('d');
$qb->select('count(DISTINCT d)')
->join('AppBundle:Order', 'o', 'WITH', 'o.discountCodes = d')
->where('o.status = :status')
->setParameter('status', Order::STATUS_SUCCESS)
;
But I got this error:
Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected
Do you know how do that? Thanks for helping