My english may be not very good.
I have 4 entities class, EntityA, EntityB, EntityC and EntityD
EntityA has many EntityB, the field is $bs
EntityA has many EntityC, the field is $cs
EntityA has many EntityD, the field is $ds
If I do something like that :
<?php
$as = $em->getRepository('EntityA')->findAll();
foreach($as as $a) {
foreach($as->getBs() as $b) {
// code
}
foreach($as->getCs() as $c) {
// code
}
foreach($as->getDs() as $d) {
// code
}
}
?>
I get like 1+N*3 query.
If I do
<?php
$em->getRepository('EntityA')
->createQueryBuilder('a')
->select('a, b, c, d')
->leftJoin('a.bs', 'b')
->leftJoin('a.cs', 'c')
->leftJoin('a.ds', 'd')
->getQuery()->execute();
?>
Bingo, I have only 1 query, but I don't know if it's really efficient.
Because doctrine will probably translate it as simple sql join.
Mysql will probably return N^4 rows. Sure, doctrine orm will hydrate it,
and drop duplicate rows.
But for the worst case scenario, if I have like 100 entityA, each one has
100 entityB, 100 entityC and 100entityD,
the database will return like 100.000.000 rows.
I have found this post
: http://www.doctrine-project.org/jira/browse/DDC-1149
I am using master, but it doesn't seems to works.
In doctrine 1, there was a nice feature, but I didn't found the same
feature in doctrine 2.
http://doctrine.readthedocs.org/en/latest/en/manual/component-overview.html#loading-related-records
It was nice because I can get all records, with only 4 queries.
Someone have a way to fix this issue in doctrine 2?
thanks
--
You received this message because you are subscribed to the Google Groups
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.