Doctrine中的toArray()方法存在问题。它没有得到我的关系:
首先查询:
$q = Doctrine::getTable('posts')->find(1);
debug($q->toArray(true));
在没有关系的情况下打印postid = 1
$q = Doctrine::getTable('posts')->find(1);
$q->Tags->toArray();
debug($q->toArray(true));
...使用标记关系打印结果。
但我想这样做:
Doctrine::getTable('posts')->findAll()->toArray(true);
...并获得帖子的所有关系,而不是我有一个帖子行数组。
关于如何使其与关系一起工作的任何想法?
(注意我为深度属性添加了toArray(true)。
感谢您的帮助
答案 0 :(得分:1)
我相信你需要加入查询。否则它不会保留相关数据。
$q = Doctrine_Query::create()
->from('Post p')
->leftJoin('p.RelatedModel1 rm1')
->leftJoin('p.RelatedModel2 rm2');
$q->findAll()->toArray(true);
答案 1 :(得分:1)
您可以为此表创建一个附加了所有关系的命名查询:
Doctrine::getTable('posts')->addNamedQuery('get.by.id.with.relations', 'DQL here...');
然后只使用这样的东西:
Doctrine::getTable('posts')->find('get.by.id.with.relations', array(123));
答案 2 :(得分:0)
$q = Doctrine_Query::create()
->from('Post p')
->leftJoin('p.RelatedModel1 rm1')
->leftJoin('p.RelatedModel2 rm2');
$q->findAll()->toArray(true);
我可以添加 - > gt; limit() - > offset() 查询?
我认为如果我首先创建查询,那么findAll的行为与执行权相同吗?