Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Catalyst FormFu Create Data in Related Table

by simpzoid (Novice)
on Sep 24, 2012 at 11:56 UTC ( #995360=perlquestion: print w/ replies, xml ) Need Help??
simpzoid has asked for the wisdom of the Perl Monks concerning the following question:

Dear All, I have been the following 2 methods in a Catalyst controller:
sub create :Chained('base') :PathPart('create') :FormConfig('author/edit.conf') { my ( $self, $c ) = @_; my $form = $c->stash->{form}; $form->stash( schema => $c->stash->{schema} ); if ( $form->submitted_and_valid ) { my $author = $form->stash->{schema}->resultset('Author')->new_result({}); $form->model->update($author); $c->response->redirect( $c->uri_for( $self->action_for('l +ist')) ); } $c->stash(template => 'author/formfu_create.tt2'); } sub edit :Chained('object') :PathPart('edit') :Args(0) :FormConfig('author/edit.conf') { my ( $self, $c, $id ) = @_; my $form = $c->stash->{form}; if ( $form->submitted_and_valid ) { $form->model->update($c->stash->{rs}); $c->response->redirect( $c->uri_for( $self->action_for +('list')) ); } else { $form->model->default_values($c->stash->{rs}); } $c->stash(template => 'author/formfu_create.tt2'); }
The methods give the following results:
Edit gives
SELECT me.id, me.name FROM author me WHERE ( me.id = ? ): '1'
UPDATE author SET name = ? WHERE ( id = ? ): 'scott', '1'
SELECT me.id, me.address, me.author_id FROM address me WHERE ( ( me.id = ? AND me.author_id = ? ) ): '1', '1'
UPDATE address SET address = ? WHERE ( id = ? ): '13 thriplee road', '1'

Create Gives
INSERT INTO author ( name) VALUES ( ? ): 'Marge'

...and finally the question. Why does the create method not do an insert into the address table and what do I have have to do to persuade the create method to do said insert?

In case it helps the object and based methods are:
sub base :Chained('/') :PathPart('author') :CaptureArgs(0) { my ($self, $c) = @_; my $someclass = $c->model('DB_APPLICATION'); my $schema = $someclass->connect( 'dbi:mysql:'.$c->session->{username}, $c->session->{username}, $c->session->{password}, { AutoCommit => 1 }, ); $c->stash(schema => $schema); } sub object :Chained('base') :PathPart('id') :CaptureArgs(1) { my ($self, $c, $id) = @_; # Find the period record and store it in the stash $c->stash(rs => $c->stash->{schema}->resultset('Author')->find($id +)); }
Thanks.

Comment on Catalyst FormFu Create Data in Related Table
Select or Download Code
Re: Catalyst FormFu Create Data in Related Table
by Anonymous Monk on Sep 24, 2012 at 12:44 UTC

    Why does the create method not do an insert into the address table and what do I have have to do to persuade the create method to do said insert?

    Hmm, you call model->update so maybe you should call model->create or something

      $form->model->create( {resultset => 'Author'});
      gives me the same problem as
      $form->model->update($author);
      i.e. no data created in the address table

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://995360]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2014-12-19 04:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (70 votes), past polls