Ticket #1762 (closed defect: fixed)
Join "to many" and using primary key in pager's query raises error
| Reported by: | djsv | Owned by: | guilhermeblanco |
|---|---|---|---|
| Priority: | major | Milestone: | 1.0.6 |
| Component: | Pager | Version: | |
| Severity: | Keywords: | ||
| Cc: | Has Test: | no | |
| Status: | Pending Core Response | Has Patch: | no |
Description
This code:
$query = Doctrine_Query::create()
->from('User u')
->leftJoin('u.Roles') // join "to many"
->orderBy('u.id'); // using primary key
$pager = new Doctrine_Pager($query, $page, $perPage);
$records = $query->execute();
raises an exception "ambigous column 'id'":
Doctrine_Connection_Pgsql_Exception: SQLSTATE[42702]: Ambiguous column: 7 ERROR: ссылка на колонку "id" неоднозначна LINE 1: ..."."id" = "r2"."role_id" WHERE "u"."id" IN (SELECT "doctrine_... in /home/common/library/Doctrine/Connection.php on line 1076
because there are two links to one column in autogenerated SQL:
SELECT ... FROM "user" "u" LEFT JOIN "role-user" "r2" ON "u"."id" = "r2"."user_id" LEFT JOIN "role" "r" ON "r"."id" = "r2"."role_id" WHERE "u"."id" IN (SELECT "doctrine_subquery_alias"."id" FROM (SELECT DISTINCT "u2"."id", "u2"."id" FROM "user" "u2" LEFT JOIN "role-user" "r4" ON "u2"."id" = "r4"."user_id" LEFT JOIN "role" "r3" ON "r3"."id" = "r4"."role_id" ORDER BY "u2"."id" LIMIT 3) AS doctrine_subquery_alias) ORDER BY "u"."id"