We have the same problems at Cohuman as well. The properties are
eagerly loaded, but accessing our associations leads to n+1 queries.

On Oct 7, 10:42 pm, Gernot <[email protected]> wrote:
> I would be very interested in a solution, too. We have similarly
> complex compositions in our domain model.
>
> Gernot
>
> On 5 Okt., 15:25, George <[email protected]> wrote:
>
>
>
> > FWIW In a recent project managed to circumvent this problem by
> > querying and pre-fetching all child items before starting the outer
> > loop(s). (I hope there's a simpler way!)
>
> > As I recall it would mean your code would look something like this:
> > (untested)
>
> > # Coax DM into preloading collections:
> > customers = Customer.all(:limit => 3)
> > customers.orders.reload
> > customers.orders.order_lines.reload
>
> > #For items you may need to prepare something like:
> > item_ids = customers.orders.lines.map{|l| l.item_id }
> > items    = Item.all( :id => item_ids )
>
> > # Then try your original loops with a slight tweak for item.sku:
> > customers.each do |c|
> >   c.orders.each do |o|
> >     o.order_lines.each do |ol|
> >       a = "#{c.name}: #{o.reference} #{ol.quantity} x
> > #{ items.first(:id => ol.item_id).sku }"
> >     end
> >   end
> > end
>
> > Food for thought anyway. Hopefully a more DM-savvy reader can improve
> > on this.
> > George
>
> > On Sep 30, 8:24 am, Marcel Hild <[email protected]> wrote:
>
> > > Hi,
> > > I recreated the model found 
> > > athttp://datamapper.org/docs/find#nested_conditions
> > > When I want to print out all Customers with all Orders, including
> > > OrderLines and everything,
> > > Datamapper eager loads the first association (Customer.orders) but for
> > > the rest
> > > it will issue n queries.
>
> > > I created a gist which shows it athttp://gist.github.com/604156
>
> > > Is there a way to have more control of what is loaded or should I fire
> > > the query differently?
>
> > > thanks for any input
>
> > > marcel

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" 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/datamapper?hl=en.

Reply via email to