2012-04-06 8 views
0

をやっているかわから:Doctrineのクエリではなく、私はこのような読み込みクエリを持って、私はここで間違っ

$fields = Doctrine_Core::getTable('model_1')->findByColumnId($id); 

は、フィールド上のvar_dumpを取って、それが必要として、それがデータを取得します。

次のアップ、私はこの

foreach($fields as $field) 
{ 
$newerFields[$field->getColumnId()] = 
Doctrine_Core::getTable('model2')->findByColumn2Id($field->getColumnId()); 
} 

は私が各$ newerFields [$フィールド]上のvar_dumpを取ると、それはそれが必要として結果が得られていません。次は私がしようとすると、次の操作を行います。

foreach($newerFields as $newerField) 
{ 
echo $newerField->getColumn3(); 
} 

をしかし、これは吐く:未定義のメソッドのDoctrine_Collectionへ コール:: getColumn3を()のactions.class.phpにライン上で69

私はできませんよ私の頭をこの周りで包み込むようにして、それをどうやってどうやって成し遂げるべきかについての愚かな考え方です。誰も私のためにトラブルを見つけることができますか?

+0

それはあなたがそれをリレーショナル表ですが、私は得ることはありませんleftJoin() – tttony

+0

を使用する必要がありますリレーショナルテーブルがある場合、なぜ私がすべきこの場合はleftJoinを使用してください。 – user1020069

答えて

1

findByColumn2Idは、結果が1つだけの場合でも、findByは常にコレクションを返します(テーブルファイルで定義しない場合)。Doctrine_Collectionを返します。 1つの結果を取得する場合は、代わりにfindOneByを使用してください。

そうしないと、データを取得するためにnewerFieldsでお子様にループする必要があります:

// array of Doctrine_Collection 
foreach($newerFields as $newerFieldCollection) 
{ 
    foreach($newerFieldCollection as $newerField) 
    { 
    echo $newerField->getColumn3(); 
    } 
} 
+0

ありがとうございました。私はレコードのコレクションを見ているので、自分でこれを考え出し、それをループしています。 – user1020069

関連する問題