Mam taką selekcję:
class CommentPeer extends BaseCommentPeer { { $c = new Criteria(); $c->addJoin(self::ORDER_ID, FoodOrderPeer::ID); $c->addJoin(FoodOrderPeer::COMPANY_ID, sfGuardUserPeer::ID); $c->addJoin(sfGuardUserPeer::ID, RestaurantPeer::COMPANY_ID); $c->add(RestaurantPeer::ID, $id); return self::doSelect($c); } }
Oraz taki getter:
class Comment extends BaseComment { public function getUsername() { return $this->getsfGuardUser()->getUsername(); } }
I niestety jeśli w ten sposób pobiorę komentarze i następnie w pętli robię echo $comment->getUsername() to dostaję dodatkowe zapytania, mimo, że sfGuardUser jest niby zjoinowany. Jak zrobić, żeby tych dodatkowych zapytań nie było? Przy 10 komentarzach będzie to 10 dodatkowych zapytań, co jest mi nie na rękę.
Widzę, że w wygenerowanym zapytaniu:
są pobierane tylko kolumny z comment. Pewnie zmiana tego da mi to, co chcę. Pytanie tylko jak?
SELECT comment.ID, comment.ORDER_ID, comment.USER_ID, comment.NOTE, comment.TEXT FROM `comment`, `restaurant`, `food_order`, `sf_guard_user` WHERE restaurant.ID=5 AND comment.ORDER_ID=food_order.ID AND food_order.COMPANY_ID=sf_guard_user.ID AND sf_guard_user.ID=restaurant.COMPANY_ID

Kolejny krok do przodu:
self::addSelectColumns($c); sfGuardUserPeer::addSelectColumns($c);
Ale nadal są dodatkowe zapytania wywoływane..
pzdr.
Pozostało mi ręczne tworzenie obiektów...