0

2 つのテーブルで単純な結合を実行しようとしていますが、使用する適切な構文を見つけるのに苦労しています。単純なものが不足していることはわかっています。

「users」テーブルからは ID が必要であり (正常に動作)、「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;
}

また、クエリに明示的な select(u.id, m.last_name) を追加しようとしましたが、結果は常に同じです

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

明らかに、アクセスしようとしているプロパティは users テーブルにありません。- last_name フィールドを要求しないかのように、クエリは正常に動作します - 私のアプリケーションは期待どおりに動作します..

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

これを行う方法の簡単な例を誰でも提供できますか (ドキュメント内のページへのリンクでも)、ドキュメント内の JOINING DQL のすべての例は、結果を反復する代わりにクエリを SQL に出力します...

Doctrine ドキュメンテーション: Join 構文

4

1 に答える 1

1

私はそれを解決することができました...

http://www.doctrine-project.org/documentation/manual/1_2/en/working-with-models

foreach($users as $user){
    $user_array[$user->id] = $user->Meta->last_name;
}
于 2010-10-31T13:19:48.540 に答える