Abstract class::dbi's sql with sql::abstract::limit
package CD::Music; use Class::DBI::AbstractSearch; package main; my @music = CD::Music->search_where( artist => [ 'Ozzy', 'Kelly' ], status => { '!=', 'outdated' }, ); my @misc = CD::Music->search_where( { artist => [ 'Ozzy', 'Kelly' ], status => { '!=', 'outdated' } }, { order_by => "reldate DESC", limit_dialect => 'LimitOffset', limit => 1 offset => 2 });
Class::DBI::AbstractSearch is a Class::DBI plugin to glue SQL::Abstract::Limit into Class::DBI.
Using this module adds following methods into your data class.
$class->search_where(%where); Takes a hash to specify \s-1WHERE\s0 clause. See SQL::Abstract for hash options. $class->search_where(\%where,\%attrs); Takes hash reference to specify \s-1WHERE\s0 clause. See SQL::Abstract for hash options. Takes a hash reference to specify additional query attributes. Class::DBI::AbstractSearch uses these attributes:
order_by Array reference of fields that will be used to order the results of your query.
limit_dialect Scalar, \s-1DBI\s0 handle, object class, etc. that describes the syntax model for a \s-1LIMIT/OFFSET\s0 \s-1SQL\s0 clause. Please see SQL::Abstract::Limit for more information.
limit Scalar value that will be used for \s-1LIMIT\s0 argument in a query.
offset Scalar value that will be used for \s-1OFFSET\s0 argument in a query.
Any other attributes are passed to the SQL::Abstract::Limit constructor, and can be used to control how queries are created. For example, to use '\s-1AND\s0' instead of '\s-1OR\s0' by default, use: $class->search_where(\%where, { logic => 'AND' });
Tatsuhiko Miyagawa <[email protected]> with some help from cdbi-talk mailing list, especially:
Tim Bunce Simon Wilcox Tony Bowden
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Class::DBI, SQL::Abstract, SQL::Abstract::Limit