0

次のようなクエリがあります。

$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 [$ field]ごとにvar_dumpを取得すると、期待どおりの結果が得られます。次はこれをやってみます:

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

しかし、これは吐き出されます: 69行目のactions.class.phpの未定義のメソッドDoctrine_Collection :: getColumn3()の呼び出し

私はこれに頭を悩ませることができず、それをどのように行うかについて考えて慌てています。誰かが私のために問題を見つけることができますか?

4

1 に答える 1

1

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

newerFieldsそれ以外の場合は、データを取得するために子をループする必要があります。

// array of Doctrine_Collection
foreach($newerFields as $newerFieldCollection)
{
  foreach($newerFieldCollection as $newerField)
  {
    echo $newerField->getColumn3();
  }
}
于 2012-04-06T06:14:58.967 に答える