I have: two objects with unidirectional association M: M.
class ShareInfo { // ... /** * @ORM\ManyToMany(targetEntity="Item") * @ORM\JoinTable(name="share_info_items", * joinColumns={@ORM\JoinColumn(name="share_id", referencedColumnName="id")}, * inverseJoinColumns={@ORM\JoinColumn(name="item_id", referencedColumnName="id")}) * * @var Item[] */ private $items; } class Item { // ... // This entity has no association with ShareInfo, // because M:M is undirectional and defined in ShareInfo entity }
What I want: Select the data from the element table (object object) where at least one M: M record exists between Item and ShareInfo.
My suggestion that does not work (I have a semantic error) :
$queryBuilder ->select('i') ->from(Item::class, 'i') ->innerJoin(ShareInfo::class, 'shareInfo', 'WITH', 'shareInfo.items = i');
In pure SQL, I would do something like this:
SELECT i.* FROM items i INNER JOIN share_info_items shareInfo ON shareInfo.item_id = i.id
I canβt believe that there is no DQL analogue for this. The only solution I can imagine is to split the undirected association M: M into bidirectional
PS This question has no duplicates, I checked it well.
source share