[Catalyst] Two ways to create record
Alex Povolotsky
tarkhil at over.ru
Sun Jan 13 18:41:09 GMT 2008
Matt S Trout wrote:
> On Sun, Jan 13, 2008 at 04:47:38PM +0300, Alex Povolotsky wrote:
>
>> Hello!
>>
>> In Tutorial (BTW, "CRUD" section of tutorial lacks U completely), I've
>> seen this way of filling in the record:
>>
>> my $book = $c->model('GalleryDB::Gallery')->new({});
>> $book->populate_from_widget($result);
>>
>
> which sets a bunch of data and then calls $book->insert_or_update;
>
>
>> In InstantCRUD data is filled in with
>>
>> my $item = $result->save_to_db();
>>
>
> I have no idea how this works.
>
It seems to obtain $result with
my $result = $w->action( $c->uri_for('do_add') )->process( $c->request );
And $result is a HTML::Widget::Result::DBIC instance, so save_to_db is
"HTML::Widget::DBIC::Result method to save the data from widget to
the database"
>
> Neither of these are standard DBIx::Class methods; the standard approach
> is to do
>
> my $obj = $rs->new(\%data);
>
> <maybe use $obj->column_name($value) to set more data>
>
> $obj->insert;
>
> DBIx::Class::ResultSet provides a $rs->create(\%data) shortcut that calls
> $obj->insert for you before returning it, but that really is just a
> shortcut - the end effect is identical.
>
> For more info, have a look at the DBIx::Class documentation on CPAN and
> note that DBIC-specific questions can be asked on the dedicated dbix-class
> list.
>
>
Thanks a lot. I'll go read it. There is such a lot of useful Perl modues...
Alex.
More information about the Catalyst
mailing list