Доктрина: неизвестный псевдоним таблицы. Это DQL правильно? - PullRequest
0 голосов
/ 16 апреля 2010

Я пытаюсь выполнить запрос, но получаю ошибку:

Неизвестный псевдоним таблицы

Таблицы настроены следующим образом:

Template_Spot hasOne  Template
Template      hasMany Template_Spot
Template      hasMany Location
Location      hasOne  Template

Я пытаюсь выполнить следующий DQL:

$locationid = 1;
$spots = Doctrine_Query::create()
    ->select('cts.*, ct.*, uc.*')
    ->from('Template_Spot cts')
    ->innerJoin('Template ct')
    ->innerJoin('Location uc')
    ->where('uc.locationid = ?', $locationid)->execute();

Кто-нибудь замечает проблему?

Ответы [ 2 ]

1 голос
/ 16 апреля 2010

Попробуйте выяснить, какой из псевдонимов таблицы не распознается.Я думаю, что он пытается объединить Template_Spot с Location, и в этом случае вам может понадобиться:

[pseudo code]
FROM Template_Spot cts, cts.Template ct, ct.Location uc

Иногда может помочь и простое определение имен Alias ​​и foreignAlias ​​в вашей схеме, Doctrine легко запутается.При таком множественном объединении Doctrine может иногда генерировать больше запросов SQL, чем необходимо, и вы можете полностью обойти DQL.

0 голосов
/ 16 апреля 2010

В случае выбора всех полей, ->select() не требуется вообще.

Не должно ли быть:

$spots = Doctrine_Query::create()
    ->from('Template_Spot cts')
    ->leftJoin('Template ct')
    ->leftJoin('Location uc')
    ->where('uc.id = ?', $locationid)
    ->execute();
...