On Tue, 7 Nov 2006, John Napiorkowski wrote:

Hi,

I've been using InflateColumn::DateTime for a few
weeks now for my reports and it's worked very well.
However I have run into the following trouble; if I
try to change the datetime object value using one of
the setter methods it seems like DBIx doesn't notice.

Here's an example:  Assume I have a column in a
resultset called 'date_of_birth'

my $birth_month = $c->resultrow->date_of_birth->month;

Okay, $birth_month is properly set and I can see that
in the output.  But if I try:

$c->resultrow->date_of_birth->set_month([new month]);

and then:

$c->resultrow->insert_or_update

The change doesn't get applied.  If I change other
columns in this row it works fine.  However when I
inspect the $resultrow->is_changed and the
$resultrow->has_dirty_columns I don't see the
'date_of_birth' column marked as altered.  I will see
other columns that I changed.

I'd like to figure out how to many this work, since I
expect it could also be the case for other inflated
objects that I might have, like a text field that gets
inflated to an HTML object, for example.

Has anyone else run into this and if so what was the
solution you found?


Hi John,

Whats happening is that

$c->resultrow->date_of_birth->set_month([new month])

is creating an unnamed DateTime object, setting the new month on it, then throwing it away. I'm afraid it's not magic enough to grasp what you wanted to do with that syntax.. You'll need to do something like:

my $dob = $c->resultrow->date_of_birth;
$dob->set_month([new month]);
$c->resultrow->date_of_birth($dob);
$c->resultrow->update;


Jess



_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
Searchable Archive: http://www.mail-archive.com/[email protected]/

Reply via email to