Details
Description
For example:
$queryBuilder
->select('DISTINCT c.id')
->from('Campaigns', 'c')
->leftJoin('c', 'CampaignOperations', 'od', 'od.campaignId = c.id AND od.operation = :operation')
->from('BannerGroups', 'bg')
->innerJoin('bg', 'BannerGroupStrategies', 'bgs', 'bgs.groupId = bg.id AND bgs.advSystem = :system')
->where('bg.campaignId = c.id');
Builded the query:
SELECT DISTINCT c.id FROM Campaigns s LEFT JOIN CampaignOperations od ON (od.campaignId = c.id AND od.operation = :operation) INNER JOIN BannerGroupStrategies bgs ON (bgs.groupId = bg.id AND bgs.advSystem = :system), BannerGroups bg WHERE (bg.campaignId = c.id)
If this query execute on mysql, we get error:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bg.id' in 'on clause'
Expected result:
SELECT DISTINCT c.id FROM Campaigns s LEFT JOIN CampaignOperations od ON (od.campaignId = c.id AND od.operation = :operation), BannerGroups bg INNER JOIN BannerGroupStrategies bgs ON (bgs.groupId = bg.id AND bgs.advSystem = :system) WHERE (bg.campaignId = c.id)
Regression after patch https://github.com/doctrine/dbal/pull/175