On Aug 25, 2007, at 9:39 AM, Jess Robinson wrote:


On Wed, 22 Aug 2007, Paul Makepeace wrote:

I have a standard has_many linking multiple groups profiles to a
particular user,

 My::Schema::User->has_many(user_profile => 'My:Schema::UserProfile',
        { 'foreign.user_uid' => 'self.uid', } );

UserProfile is the link class ("join") table: user_uid, profile_uid

I'd like to be able to set a bunch of profile_uids and have the ORM
sort out which need deletion and creation. Is this possible?

I'm not missing something am I? My code does the equivalent of this:

$user->user_profiles->delete;
$user->create_realted('user_profiles', {profile_id => $_}) for @profiles;

That's initially how I did it too, then I ran into problems when updating a big list where most of the profiles were already there, and deleting then recreating them all fired a bunch of triggers and generally polluted the database with old rows, causing the vacuuming to take place a lot more frequently. That was the point where I rewrote it to the version I posted a couple of days ago, which only deletes entries that need to be deleted, and saves the database a lot of work.

I looked in the cookbook and there's examples on building the
relationships ({has,many_to}_many) but not much (anything?) on using
them.

::Manual::Joining should have this sorta stuff in, but may not yet.

The code I posted a couple of days ago works pretty well for the common case, feel free to stuff it into the manual wherever it seems to fit...

--
Jason Kohles
[EMAIL PROTECTED]
http://www.jasonkohles.com/
"A witty saying proves nothing."  -- Voltaire



_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]

Reply via email to