I have three entities Compound
, ComponentQuantity
, and Component
the Compound
has a ManyToMany
relationship with ComponentQuantity
and ComponentQuantity
has a ManyToMany
relationship with Component
.
I need to get the Compound
's which ComponentQuantity
are related with a Component
,
If I would need the component quantity I would use:
$qb = $this->createQueryBuilder("c")
->where(':componentQuantity MEMBER OF c.componentQuantities')
->setParameters(array('componentQuantity' => $componentQuantity));
but I need something like
$qb = $this->createQueryBuilder("c")
->where(':component MEMBER OF c.componentQuantities.components')
->setParameters(array('component' => $component));
but this not work.
CodePudding user response:
You can do MEMBER OF
on a level so for example c.componentQuantities
but not c.componentQuantities.components
. To do this you would need to do this (make a join to get the data at the right level):
$qb = $this->createQueryBuilder("c")
->join('c.componentQuantities', 'cq')
->where(':component MEMBER OF cq.components')
->setParameters(array('component' => $component));