Как правильно извлекать информацию из двух таблиц, используя доктрину ORM? - PullRequest
0 голосов
/ 31 октября 2010

Я пытаюсь выполнить простое объединение для двух таблиц, и у меня возникают проблемы с поиском правильного синтаксиса для использования - я знаю, что упускаю что-то простое.

Из таблицы «пользователи» мне нужен идентификатор (работает нормально) и из таблицы 'meta' мне нужно last_name (не работает)

$q = Doctrine_Query::create()
->from('Users u')
->leftJoin('u.Meta m');

$users = $q->execute();

//attempt 1    
foreach($users as $user){
    $user_array[$user->id] = $user->last_name;
}

//attempt 2   
foreach($users as $user){
    $user_array[$user->id] = $user->m.last_name;
}

Я также попытался добавить явный выбор (u.id, m.last_name) к запросу, норезультат всегда один и тот же

Uncaught exception 'Doctrine_Record_UnknownPropertyException' with message
'Unknown record property / related component "last_name" on "Users"

Очевидно, что свойство, к которому я пытаюсь получить доступ, отсутствует в таблице пользователей.-Просмотр работает нормально, как будто я не запрашиваю поле last_name - мое приложение работает как положено ..

//proof   
foreach($users as $user){
    $user_array[$user->id] = 'fake_last_name!';
}

Может ли кто-нибудь привести простой пример того, как я должен это сделать (дажессылка на страницу в документации) все примеры СОЕДИНЕНИЯ DQL в документации выводят запрос в SQL вместо итерации результатов ...

Документация доктрины: Синтаксис соединения

1 Ответ

1 голос
/ 31 октября 2010

Мне удалось это решить ...

http://www.doctrine -project.org / документация / manual / 1_2 / ru / работа с моделями

foreach($users as $user){
    $user_array[$user->id] = $user->Meta->last_name;
}
...