2012-04-06 72 views
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 [$场]一的var_dump和它产生的结果,因为它应该。在的actions.class.php 调用未定义的方法Doctrine_Collection :: getColumn3()上线69

我不能:接下来我试着这样做:

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

但这吐出来把我的头围绕在这,并且对如何完成这个想法感到慌乱。任何人都可以为我找到麻烦吗?

+0

如果是关系表,你应该使用leftJoin() – tttony 2012-04-06 02:55:32

+0

这是一个关系表,但我不明白为什么我要在这种情况下使用leftJoin – user1020069 2012-04-06 05:48:00

回答

1

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

否则,你将不得不对循环孩子的newerFields检索数据:

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

谢谢,我自己想到了这一点,并循环它是解决方案,因为我正在查看一组记录。 – user1020069 2012-04-06 17:30:09