hi you can use sfPropelCustomJoinHelper class to hydrate the related objects.
On Sat, Aug 8, 2009 at 10:33 PM, Mo Mughrabi <[email protected]> wrote: > Thanks, Gábor > > I still face the same problem, I mean in the template I don't know for sure > how to retrieve records from other table without having to hit the database > several times, plus its going into a loop between parent and child records > as i described in the first email. Any idea how to handle this from the > template side? > > > > On Sat, Aug 8, 2009 at 3:14 PM, Gábor Fási <[email protected]> wrote: > >> >> Using addJoin does not mean the resulting values are used while >> hydrating, if the relationships are described in your schema.yml, use >> this: >> >> $c = new Criteria(); >> $c->add(AreaPeer::DISTRICTS_ID, >> $request->getParameter('search_input_districts')); >> $c->add(ResturantsPeer::IS_ACTIVE, TRUE); >> $this->objs = AreaPeer::doSelectJoinAll($c); >> >> this code will automatically add the neccesary joins, and take care of >> the hydration of the related objects. >> >> On Sat, Aug 8, 2009 at 14:03, Mo Mughrabi<[email protected]> wrote: >> > Hello, >> > >> > am a little confused trying to build a join from 3 different tables. >> First >> > of all, I noticed in the debug toolbar it was hitting the table 20 times >> > which is the number of records i have although i made a join. >> > >> > >> > this is my action code >> > >> > $c = new Criteria(); >> > >> > >> > $c->add(AreaPeer::DISTRICTS_ID, >> > $request->getParameter('search_input_districts')); >> > $c->addJoin(AreaPeer::ID, ResturantAreaPeer::AREA_ID); >> > >> > $c->addJoin(ResturantAreaPeer::RESTURANTS_ID, ResturantsPeer::ID); >> > $c->add(ResturantsPeer::IS_ACTIVE, TRUE); >> > >> > >> > $this->objs = AreaPeer::doSelect($c); >> > >> > >> > >> > the resulted query from this is the following >> > >> > SELECT area.ID, area.NAME, area.GIS, area.DISTRICTS_ID FROM `area`, >> > `resturants`, `resturants_area` WHERE area.DISTRICTS_ID='2' AND >> > resturants.IS_ACTIVE=1 AND area.ID=resturants_area.AREA_ID AND >> > resturants_area.RESTURANTS_ID=resturants.ID >> > >> > >> > >> > Which seem to be okay, when i remove the column names and run it with >> select >> > * i get all the records am aiming to. >> > >> > Now, in my template, am not entirely sure how to use it. Here is what i >> > did.. >> > >> > >> > <?php foreach ($objs as $obj):?> >> > >> > <?php echo $obj->getName();?> >> > >> > <?php foreach ($obj->getResturantAreas() as $Resturant):?> >> > <?php echo $Resturant->getResturants();?> >> > >> > <br> >> > <?php endforeach;?> >> > >> > <?php endforeach;?> >> > >> > >> > It does return all the records, but it has goes into a inner loop >> repeating >> > the same thing over and over for each record from the main AreaPeer. Any >> > idea how I can over come this? >> > > >> > >> >> >> > > > > -- Regards, Dheeraj --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en -~----------~----~----~----~------~----~------~--~---
