</div>
<div class="slide">
+ <h1>Contact Info</h1>
+ <ul>
+ <li>IRC: irc.perl.org #dbix-class</li>
+ <li>ML: <a href="http://lists.scsys.co.uk/mailman/listinfo/dbix-class">http://lists.scsys.co.uk/mailman/listinfo/dbix-class</a></li>
+ <li><a href="http://search.cpan.org/perldoc?DBIx::Class">DBIx::Class</a> yo</li>
+ </ul>
+ </div>
+
+ <div class="slide">
<h1>Authors</h1>
<h4>Originally Leo Lapworth @ LPW 2009</h4>
<h4>Amiri Barksdale</h4>
<div class="slide">
<h1>What's up guys?</h1>
- <div class="notes">
- <ul>
- <li>How many people have used any ORM?<ul>
- <li>In Perl?<ul>
- <li>DBIC?</li>
- <li>Class::DBI?</li>
- <li>Rose::DB?</li>
- <li>Fey?</li>
- <li>Others?</li>
- </ul></li>
- <li>AR?</li>
- <li>DataMapper?</li>
- <li>(N)Hibernate?</li>
+ <ul class="incremental">
+ <li>How many people have used any ORM?</li><ul class="incremental">
+ <li>In Perl?<ul class="incremental">
+ <li>DBIC?</li>
+ <li>Class::DBI?</li>
+ <li>Rose::DB?</li>
+ <li>Fey::ORM?</li>
+ <li>Others?</li>
</ul></li>
- </ul>
- </div>
+ <li>AR?</li>
+ <li>(N)Hibernate?</li>
+ </ul></li>
+ </ul>
</div>
<div class="slide">
<ul class="incremental">
<li>No need to pair placeholders and values</li>
<li>Automatically gets autoincremented id for you</li>
- <li>Transparrently uses INSERT ... RETURNING for databases that support it</li>
+ <li>Transparently uses INSERT ... RETURNING for databases that support it</li>
</ul>
</div>
authors.name as author_name
FROM books, authors
WHERE books.author = authors.id
-');</pre>
- </div>
+');
- <div class="slide">
- <h1>SQL: Read</h1>
-<pre>while( my $book = $sth->fetchrow_hashref() ) {
+while( my $book = $sth->fetchrow_hashref() ) {
print 'Author of '
. $book->{title}
. ' is '
my @books = $book_rs->search({
author => $author_id,
-})-><a href="http://search.cpan.org/perldoc?DBIx::Class::ResultSet#all">all</a>;</pre>
- <ul class="incremental">
- <li>TMTOWTDI</li>
- </ul>
- </div>
+})-><a href="http://search.cpan.org/perldoc?DBIx::Class::ResultSet#all">all</a>;
- <div class="slide">
- <h1>DBIC: Read</h1>
-<pre>while( my $book = $books_rs->next ) {
+while( my $book = $books_rs->next ) {
print 'Author of '
. $book->title
. ' is '
. $book->author->name
. "\n";
-}</pre>
+}
+</pre>
+ <ul class="incremental">
+ <li>TMTOWTDI</li>
+ </ul>
</div>
<div class="slide">
title => 'New title',
});</pre>
<ul class="incremental">
- <li>Lazy Update</li>
+ <li>Won't update unless value changes</li>
</ul>
</div>
</div>
<div class="slide">
+ <h1>SQL: Search</h1>
+<pre>my $sth = $dbh->prepare('
+ SELECT title,
+ authors.name as author_name
+ FROM books
+ WHERE books.name LIKE "%monte cristo%" AND
+ books.topic = "jailbreak"
+');
+</pre>
+ </div>
+
+ <div class="slide">
+ <h1>DBIC: Search</h1>
+<pre>
+my $book = $book_rs-><a href="http://search.cpan.org/perldoc?DBIx::Class::ResultSet#search">search</a>({
+ 'me.name' => { -like => '%monte cristo%' },
+ 'me.topic' => 'jailbreak',
+})-><a href="http://search.cpan.org/perldoc?DBIx::Class::ResultSet#next">next</a>;
+</pre>
+ <ul class="incremental">
+ <li><a href="http://search.cpan.org/perldoc?SQL::Abstract">SQL::Abstract</a></li>
+ <li>(kinda) introspectible</li>
+ <li>Prettier than SQL</li>
+ </ul>
+ </div>
+
+ <div class="slide">
<h1>OO Overidability</h1>
<ul class="incremental">
<li>Override new if you want to do validation</li>
</div>
<div class="slide">
- <h1><a href="http://search.cpan.org/perldoc?SQL::Abstract">SQL::Abstract</a></h1>
-<pre>my $resultset = $book_rs->search({
- name => { -like => "%$nick%" },
-});</pre>
- <ul class="incremental">
- <li>(kinda) introspectible</li>
- <li>Prettier than SQL</li>
- </ul>
- </div>
-
- <div class="slide">
<h1>Result vs ResultSet</h1>
<ul class="incremental">
<li>Result == Row</li>
<h1><a href="http://search.cpan.org/perldoc?DBIx::Class::ResultSetColumn">ResultSetColumn</a></h1>
<pre>my $rsc = $schema->resultset('Book')
->get_column('price');
+$rsc->first;
+$rsc->all;
$rsc->min;
$rsc->max;
$rsc->sum;