On Fri, Sep 07, 2007 at 01:51:32PM +0100, Richard Jones wrote:
> In my Catalyst app, a method is looking for a partial match on an 
> existing record, then updating the record with missing data, ie
> 
> my $user = $c->model('Schema::User');
> 
> if ( my $partial_match = $user->find( $search_for_missing{gender} ) ) {
>     # record matched on last_name, first_name, dob, etc, but ! gender
>     $user->update( $form_data ); # should just update gender field
> }
> 
> All appears to be working fine, but I notice from the debugging SQL that 
> the date field (dob) is always updated, even though the submitted value 
> is identical to the stored value of the retrieved record, ie:
> 
> UPDATE users SET dob = ?, gender = ? WHERE ( id = ? )
> 
> I assume this is because I am using InflateColumn::DateTime on the date 
> fields. If I dump $user->last_name I get a scalar, but $user->dob gives 
> me a complex data structure (the DateTime object?). But I'm not sure why 
> it is trying to update the date field. Presumably it's harmless, as the 
> update would silently fail anyway?

My suspicion would be that your DB isn't sending back the same datetime
string as is being saved, so the update always -thinks- the data's changed
even though the column values are equivalent.

If so, the DateTime::Format::NameOfYourDb module probably needs patching.

Fancy trying warn $obj->get_column('dob') before+after to see if I'm right?

-- 
      Matt S Trout       Need help with your Catalyst or DBIx::Class project?
   Technical Director    Want a managed development or deployment platform?
 Shadowcat Systems Ltd.  Contact mst (at) shadowcatsystems.co.uk for a quote
http://chainsawblues.vox.com/                    http://www.shadowcat.co.uk/ 

_______________________________________________
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