DBIC 3 - Primer
-
Upload
aran-deltac -
Category
Technology
-
view
3.626 -
download
1
description
Transcript of DBIC 3 - Primer
DBIx::Class Primer
How to do common day-to-day tasks.
Creating Rows: create()
• Get a resultset and call:$rs->create(\%vals).
• Effectively a shortcut for:$rs->new_result(\%vals)->insert().
my $campaign = $campaigns->create( { campaign_name => ‘Test’ });
Updating Rows: update()
$campaign->update( { campaign_name => ‘Test Test’ });
# Is the same as...
$campaign->campaign_name( ‘Test Test’ );$campaign->update();
Deleting Rows
# Delete all campaigns!
$campaigns->delete();
# Or just delete one row.
$campaign->delete();
Find Rows: find()
• Returns a single row.• Argument is the value of the primary key.• Multiple values may be passed in the case of a
multiple column primary key.• If passing multiple values then use named
arguments.
my $campaign = $campaigns->find( $cid );
my $translation = $translations->find( { message_code => $message_code, language_code => $language_code, accounting_division_id => 0,} );
find_or_create()
my $campaign = $campaigns->find_or_create( { campaign_name => ‘Test Test’ });
# Is the same as...
my $campaign = $campaigns->find( { campaign_name => ‘Test Test’ });$campaign ||= $campaigns->create( { campaign_name => ‘Test Test’ });
update_or_create()
my $campaign = $campaigns->update_or_create( { campaign_name => ‘Test Test’, status => 0 });
# Is the same as...
my $campaign = $campaigns->find( { campaign_name => ‘Test Test’ });
if ($campaign) { $campaign->update({ status=>0 });} else { $campaign = $campaigns->create( { campaign_name=>‘Test Test’, status=>0 } );}
Relationships
• DBIC supports one-to-many, many-to-one, many-to-many, and one-to-one relationships.
• Using these relationships is straightforward.
# A one-to-many (has_many) relationship:my $campaigns = $advertiser->campaigns();
# A many-to-one (belongs_to) relationship:my $advertiser = $campaign->advertiser();
# A one-to-one (has_one) relationship:my $money = $campaign->money();
# A many-to-many (many_to_many) relationship:my $users = $role->users();
Resources
• DBIx::Class Manual @ CPANhttp://search.cpan.org/~jrobinson/DBIx-Class-0.08009/lib/DBIx/Class/Manual.pod
• DBIx::Class Tutorial (under development)http://desert-island.me.uk:8888/perldoc/dbic-tutorial/lib/DBIx/Class/Tutorial/