开发者

PHP Doctrine toArray problem

I have a problem with the toArray() method in Doctrine. Its doesn't get my relations:

First query :

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

Print the postid=1 with out the relations

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

...prints the results with tag relation.

But i want to do:

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

...and get all of relations of posts , instead I got an array of post row.

Any idea about how to make it work with the relations?

(notice i added toArray(true) for deep 开发者_Python百科property.

thanks for any help


You could create named query for this table with all relations attached:

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

And then just use something like this:

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


I beleive you need to do a Join with the query. Otherwise it doesnt hydrate the realated data.

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

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


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

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

Can i Add ->limit()->offset() to the query ?

I guss that if i first create the query then findAll will act the same as execute right ?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜