I've got a patch somewhere that allows one to patch in different types of joins, but i never merged it in because it breaks the abstraction :\
i'll try to dig it up when i get home (which won't be for a while yet). -- Ted Han @knowtheory (http://twitter.com/knowtheory) DocumentCloud Investigative Reporters & Editors On Wednesday, December 7, 2011 at 4:24 PM, Jordan Ritter wrote: > Well then I think Chris' adapter might be the most concise approach to try, > assuming you match the side/type of outer join with the model you're > hydrating. > > cheers, > --jordan > > On Dec 7, 2011, at 2:13 PM, terminal_breaker wrote: > > > > What do you mean by "without talking to the data-store directly"? > > > > The phrase 'talking to the data-store directly' is from the online > > Datamapper documentation under the section titled 'Talking directly to > > your data-store': http://datamapper.org/docs/find.html > > > > > I can't immediately fathom what any ORM's behaviour should be > > > > In ActiveRecord I can create outer joins using sql fragments: > > > > Privilege.select("privileges.user_id, privileges.description, > > users.user_name ").joins('LEFT OUTER JOIN users ON privileges.user_id > > = users.id').where("privileges.description = 'delete rights' ") > > > > This would return to me an ActiveRecord object. > > > > > > On Dec 7, 3:40 pm, Jordan Ritter <[email protected] > > (http://darkridge.com)> wrote: > > > What type of concrete objects would you expect the ORM layer to return, > > > if such a method call existed? Outer joins tend to be used for getting > > > mixed tuples of data that don't correspond to concrete ORM types. I can't > > > immediately fathom what any ORM's behaviour should be.. > > > > > > What do you mean by "without talking to the data-store directly"? The > > > only way I see to do this is to pass the DM adapter the SQL directly, and > > > process the responses as abstract tuples of data (you'll get back an > > > array). You could hydrate objects yourself manually from there, but YMMV: > > > with any kind of outer join you can end up with nulls, and extra > > > check-fields-before-hydration logic would be crappy to deal with (and why > > > bother - this is DM's job to begin with). > > > > > > FWIW, you might consider using direct SQL to conduct your outer join(s) > > > and only retrieve primary keys, then use the ORM to hydrate the objects > > > akin to User.all(:id => [..]). > > > > > > cheers, > > > --jordan > > > > > > On Dec 7, 2011, at 1:07 PM, terminal_breaker wrote: > > > > > > > > > > > > > > > > > > > > > > > > > Is there a way to do left outer joins in Datamapper without having to > > > > resort to talking to the data-store directly. I've been searching the > > > > net and the Datamapper docu with not success on details how to do so. > > > > > > > > > > > > > > For example: > > > > > > > SELECT p.user_id, p.description, u.user_name > > > > FROM privileges p > > > > LEFT OUTER JOIN users u ON (p.user_id = u.id) > > > > WHERE p.description = "delete rights" > > > > > > > > > > > > > > And let's say that I have a User class and a Privilege class too. > > > > > > > -- > > > > You received this message because you are subscribed to the Google > > > > Groups "DataMapper" group. > > > > To post to this group, send email to [email protected] > > > > (mailto:[email protected]). > > > > To unsubscribe from this group, send email to > > > > [email protected] > > > > (mailto:[email protected]). > > > > For more options, visit this group > > > > athttp://groups.google.com/group/datamapper?hl=en. > > > > > > > > > > > > > > > > -- > > You received this message because you are subscribed to the Google Groups > > "DataMapper" group. > > To post to this group, send email to [email protected] > > (mailto:[email protected]). > > To unsubscribe from this group, send email to > > [email protected] > > (mailto:[email protected]). > > For more options, visit this group at > > http://groups.google.com/group/datamapper?hl=en. > > > > > -- > You received this message because you are subscribed to the Google Groups > "DataMapper" group. > To post to this group, send email to [email protected] > (mailto:[email protected]). > To unsubscribe from this group, send email to > [email protected] > (mailto:[email protected]). > For more options, visit this group at > http://groups.google.com/group/datamapper?hl=en. > > -- 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.
