Ticket #1762 (closed defect: fixed)

Opened 7 months ago

Last modified 7 months ago

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"

Change History

Changed 7 months ago by djsv

  • version 1.0.4 deleted
  • milestone changed from New to 1.0.5

Changed 7 months ago by jwage

  • status changed from new to closed
  • resolution set to fixed

Fixed in r5307

Changed 7 months ago by jwage

  • milestone changed from 1.0.5 to 1.0.6
Note: See TracTickets for help on using tickets.