DavidW
DavidW

Reputation: 5129

DQL join between unrelated entities?

Can I have a DQL join between unrelated entities using WITH DQL operator? OR is definign relationship absolutely mandatory?

I have a unidirectional relationship with Category and CategorySubsription. Where CategorySubscription has a many to one unidirectional relationship with Category. I want to grab a list of Categories c and left join CategorySubscription cs WITH cs.category_id = c.id AND cs.user_id = value.

Can I do this somehow?

Upvotes: 7

Views: 3443

Answers (2)

Jasper N. Brouwer
Jasper N. Brouwer

Reputation: 21817

Starting with Doctrine version 2.3 you can, as mentioned in a blog.

It's also mentioned in the docs if you know where to look. Scroll down to the last example under "15.2.4. DQL SELECT Examples":

Joins between entities without associations were not possible until version 2.4, where you can generate an arbitrary join with the following syntax:

<?php
$query = $em->createQuery('SELECT u FROM User u JOIN Blacklist b WITH u.email = b.email');

I know it says "not possible until version 2.4", but it definitely works starting with 2.3!

Upvotes: 6

birko
birko

Reputation: 1356

You can try using multiple from() methods and join conditions put in where() or andWhere methods()

Upvotes: -1

Related Questions