[Dbix-class] Bug with find_or_new and insert_or_update with postgresql: any success?

Matt S Trout dbix-class at trout.me.uk
Sat Mar 8 16:33:19 GMT 2008


On Mon, Feb 25, 2008 at 11:53:19PM +0300, Alex Povolotsky wrote:
> Hello!
> 
> I've found in archives nearly my case, that passing NULL to Pg is not 
> 'not passing column at all', so adding a new row with a simple code like 
> this
> 
>  my $loc = $c->model($self->model_name)->find_or_new({lid => $id});

Change this to :

   my $model = $c->model($self->model_name);
   my $loc = defined $id ? $model->find({lid => $id}) : $model->new({});

find_or_new should be used for "I have a unique key but I don't know if it
already exists". if you know you -don't- have a key, just call new()
straight off.

>  if ($form->submitted && $form->validate) {
>    # Fill in 
> data                                                                        
> 
>    $loc->name($form->field('name'));
>    $loc->descr($form->field('descr'));
>    $loc->update_or_insert();
>    $c->req->redirect($c->uri_for('list'));
>  }

This will work now.

-- 
      Matt S Trout       Need help with your Catalyst or DBIx::Class project?
   Technical Director                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://chainsawblues.vox.com/            http://www.shadowcat.co.uk/servers/



More information about the DBIx-Class mailing list