2010-04-16 2 views
0

Я пытаюсь выполнить запрос, но я получаю сообщение об ошибке:Доктрина: Неизвестный псевдоним таблицы. Правильно ли этот DQL?

Unknown table alias

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

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(); 

Есть ли проблема?

ответ

1

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

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

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

+0

ну, это должно быть cts.Template ct и cts.Location uc, потому что Template_Spot является refclass с дополнительными столбцами. Должны ли они загружаться по-разному? – Ropstah

0

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

это не должно быть:

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

 Смежные вопросы

  • Нет связанных вопросов^_^