Symfony 1.4中的Doctrine查询,不知道我在这里做错了什么

时间:2012-04-06 02:10:15

标签: php symfony-1.4 doctrine-1.2

我有一个如下所示的查询:

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

我无法解决这个问题,并且对如何完成它感到慌乱。谁能为我发现麻烦?

1 个答案:

答案 0 :(得分:1)

你的findByColumn2Id返回一个Doctrine_Collection,因为findBy总是返回一个集合(如果你没有在表文件中定义它),即使只有一个结果。如果要检索一个结果,请改用findOneBy

否则,您必须循环newerFields子项以检索数据:

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