Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^2: Catalyst and DBI

by Uragan (Initiate)
on Jul 04, 2011 at 20:41 UTC ( #912709=note: print w/replies, xml ) Need Help??


in reply to Re: Catalyst and DBI
in thread Catalyst and DBI

I don't use DBIx. I use Catalyst::Model::DBI. When I create a model, I write next:

./app_create.pl model Name_of_Model DBI:mysql:auth username password

In this case dsn, username and password pass into the model configuration. So each model has it's own configuration (the same). Without this configuration model can not connect to database. I use DBI, because I must write live queries without any ORM. I now thar it's wrong write configuration in every model and when every model connects to DB separately, but I can not understand, how I can do only one connection and write connection params in one place(((

Replies are listed 'Best First'.
Re^3: Catalyst and DBI
by Solo (Deacon) on Aug 25, 2011 at 09:28 UTC
    I use DBI, because I must write live queries without any ORM... But now every model has it's own connection...

    Do you need more than one DBI model per database, and if so, why?

    --Solo

    --
    You said you wanted to be around when I made a mistake; well, this could be it, sweetheart.

      I've been working on some documentation for dbi models.

      • http://brainbuz.org/techinfo/Catalyst-Model-Simple-Tutorial.html
      • or
      • https://github.com/brainbuz/Catalyst--Model--Simple--Tutorial

      You would create a single model to connect to each database. Then you would create submodels for each group of methods, I frequently group them by table.

      # Parent MODEL package BoPeep::Model::BoPeep; use strict; use warnings; use DBIx::Simple ; use parent 'Catalyst::Model::DBI'; __PACKAGE__->config( dsn => BoPeep->config->{dsn} , user => BoPeep->config->{user} , password => BoPeep->config->{password} , ); use Moose ; #use Moose immediately before calling #on Moose to extend the object has db=>( is =>'ro', isa=>'DBIx::Simple', lazy_build=> 1, # If we don't want to handle all dbis methods, # specify those that we want. # handles=> [qw/query flat /], ); sub _build_db { my $self = shift ; return DBIx::Simple->connect($self->dbh); } ; # Child Model package BoPeep::Model::BoPeep::Flock; use Moose; use BoPeep; use namespace::autoclean; extends 'BoPeep::Model::BoPeep'; sub List { my $self = shift ; my $db = $self->db ; my @sheep = $db->query('SELECT * FROM flock')->flat ; return @sheep ; } __PACKAGE__->meta->make_immutable( inline_constructor => 0 ); 1;

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://912709]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (2)
As of 2022-06-30 20:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My most frequent journeys are powered by:









    Results (98 votes). Check out past polls.

    Notices?