2010-01-28 106 views
0

我在Doctrine的toArray()方法有问题。它不会让我的关系:PHP Doctrine toArray问题

首先查询:

$q = Doctrine::getTable('posts')->find(1); 
debug($q->toArray(true)); 

打印=帖子ID 1出来的关系

$q = Doctrine::getTable('posts')->find(1); 
$q->Tags->toArray(); 
debug($q->toArray(true)); 

...打印带有标记关系的结果。

但我想做的事:

Doctrine::getTable('posts')->findAll()->toArray(true); 

...并获得所有职位的关系,而不是我交行的阵列。

有关如何使它与关系一起工作的任何想法?

(请注意,我加入指定者(真)为深物业。

感谢您的帮助

回答

1

您可以创建一个名为查询该表的所有关系附:

Doctrine::getTable('posts')->addNamedQuery('get.by.id.with.relations', 'DQL here...'); 

,然后只用这样的:

Doctrine::getTable('posts')->find('get.by.id.with.relations', array(123)); 
1

我beleive你需要做的与查询加入,否则它不滋润realated数据。

$q = Doctrine_Query::create() 
    ->from('Post p') 
    ->leftJoin('p.RelatedModel1 rm1') 
    ->leftJoin('p.RelatedModel2 rm2'); 

$q->findAll()->toArray(true); 
0
$q = Doctrine_Query::create() 
->from('Post p') 
->leftJoin('p.RelatedModel1 rm1') 
->leftJoin('p.RelatedModel2 rm2'); 

$q->findAll()->toArray(true); 

我可以补充 - )>偏移( 到查询 - >限制()?

我guss,如果我第一次创建查询然后findAll将采取相同的执行权?

+0

你应该可以添加对查询有效的任何内容。是的,他们只是不同的方法来达到基本相同的目的。你甚至可以使用表类,如果你想通过做一些像'Doctrine :: getTable('posts') - > getQuery('p') - > leftJoin('p.RelatedModel1 rm1') - > leftJoin(' p.RelatedModel2 rm2') - > findAll() - > toArray(true);' – prodigitalson 2010-01-28 20:52:21