Alex Rivera | Logout

Symfony2 QueryBuilder join ON and WITH difference

Asked 2013-07-02T09:58:14.287
44

I'm new with Symfony2 and I built successfully my first join through QueryBuilder and Doctrine 2. Probably this is a stupid question but both on-line and in the Symfony2's methods I was unable to find anything for understanding the difference between the join clauses "WITH" and "ON".

For example this is my join code:

->leftJoin('EcommerceProductBundle:ProductData', 'pdata', 'WITH', 'prod.id = IDENTITY(pdata.product)')

It works good but if I put ON instead of WITH I get the following error:

[Syntax Error] line 0, col 200: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got 'ON'

Why? I've seen among the objects that there are both the T_ON and T_WITH like join clauses, but which is their usage difference? What is their uses like?

Edit
Report

1 Answer

9

In theory, ON permits you to give the full join criterias, while WITH permits to add additional criterias to the default ones (IMHO).

But, what DQL permits is to avoid giving the JOIN criterias:

You just have to say: $qb->leftJoin('prod.pdata', 'pdata');

And doctrine2 will handle the join correctly.

Here is a related question about that: Can I use "ON" keyword in DQL or do I need to use Native Query?

answered 2013-07-02T11:51:01.090

Your Answer