Doctrine加入查询访问问题

时间:2011-06-30 05:00:10

标签: zend-framework doctrine

我有两个表页面和page_desc并且有关系

$ this-> hasMany('Model_PagesDesc as PageDesc',array(          'local'=> 'ID',          'foreign'=> 'pages_id'));

我有一个查询

return Doctrine_Query::create()
                 ->select('m.*, d.*')
                 ->from('Model_Pages m')
                 ->leftJoin('m.PageDesc d')
                 ->execute();

现在,当查询执行时。当我尝试获得SCEOND TABLE的现场价值时,我会看到它在现场恢复一些完整的实际价值

<?php echo $pages->PageDesc->content;?>

1 个答案:

答案 0 :(得分:1)

如果您使用的是hasMany,则Model_Pages::PagesDesc应该是Doctrine_Collection而不是Model_PagesDesc个实例。我不确定但我会假设集合的默认行为是在转换为字符串时返回集合中的count元素,因此是整数。您需要循环遍历集合或获取特定项目。

<?php echo $pages->PageDesc->getFirst()->content; ?>

OR

<?php foreach($pages->PageDesc as $desc): ?>
  <?php echo $desc->content; ?>
<?php endforeach; ?>

或者你可以为这个模型编写一个自定义集合,为集合中的每个元素返回content字段的concat。

然而,似乎一个页面真的不应该有多个描述吗?您可能需要考虑使用1-1关系或仅将描述设置为页面模型上的列。