What you see in the cfdump is not what's actually called when you get a user. When you cfdump an ORM entitiy, it tries to show _everything_. You can control how many levels are displayed by using the "top" attribute.
PS. There is an CF ORM specific google group that you may find useful. http://groups.google.com/group/cf-orm-dev?pli=1 - Gabriel On Tue, Sep 21, 2010 at 5:48 AM, Glyn Jackson <[email protected]>wrote: > > I have posted about this on my blog, but if anyone here could give their > opinion I would very much like to hear it. > > I am trying to understand if I am looking at ORM correctly in terms of a > many-to-many relationship. > > blog post is here > > http://www.cfcoffee.co.uk/index.cfm/2010/9/20/Head-Spin-Moment-ORM-manytomany-Help > > for the sake of cftalk I have posted again below. thanks :) > > > ------------------------ > > Below I have two tables. Users and Monsters. A user can have many monsters, > and a monster can have many users. Therefore I have a many-to-many > relationship. Now I decide to include a join table called mostercollected to > normalise the table somewhat. So below is what I come up with. > > /** > * user > */ > component output="false" persistent="true" { > > property name="user_id" column="user_id" type="numeric" > ormtype="int" fieldtype="id" generator="increment"; > > property name="user_name" column="user_name" > type="string" ormtype="string"; > > /* link tables */ > property name="monsters" fieldtype="many-to-many" > CFC="monsters" FKColumn="user_id" singularname="monsters" > inversejoincolumn="monster_id" linktable="monstersCollected"; > > users function init() output=false{ > return this; > } > > } > > > > > /** > * monsters > */ > component output="false" persistent="true" { > > property name="monster_id" column="monster_id" type="numeric" > ormtype="int" fieldtype="id" generator="increment"; > > property name="monster_name" column="monster_name" type="string" > ormtype="string" ; > > /* link tables */ > property name="users" fieldtype="many-to-many" CFC="users" > FKColumn="monster_id" singularname="monsters" > inversejoincolumn="user_id" linktable="monstersCollected"; > > monsters function init() output=false{ > return this; > } > > } > > > /* Join table */ > > > > component entityname="UserMonster" persistent="true" accessors="true" > table="monstersCollected" > { > property name="user_id" > fieldtype="id,many-to-one" > cfc="users" > cascade="all" > fkcolumn="user_id"; > > property name="monster_id" > fieldtype="id,many-to-one" > cfc="monsters" > cascade="all" > fkcolumn="monster_id"; > > } > > > Now if I dump a user to screen, yes I can see all the monsters that each > user has (cool), but the array continues down more, showing all monsters and > all users that belong to that monster, effectively repeating data (bad, > right?). > > > My concern is that of performance. If every time I want to get a user and I > then get monsters + monster again and users that belong to that monster > (head spin, moment), this seems like a lot of overhead (or is it?). > > Is this the issue I am making it out to be? > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337254 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

