我有一个查询如下:
$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();
}
但这说明:在actions.class.php第69行调用未定义的方法Doctrine_Collection::getColumn3()
我无法理解这一点,正在慌乱地思考如何完成它。有人能帮我发现麻烦吗?
您的findByColumn2Id
返回一个Doctrine_Collection,因为即使只有一个结果,findBy
也总是返回一个集合(如果您没有在表文件中定义它)。如果要检索一个结果,请改用findOneBy
。
否则,您将不得不在newerFields
子级上循环以检索数据:
// array of Doctrine_Collection
foreach($newerFields as $newerFieldCollection)
{
foreach($newerFieldCollection as $newerField)
{
echo $newerField->getColumn3();
}
}