Name
QBit::Application::Model::DB::Query
Description
Base class for DB queries.
Abstract methods
_found_rows
Package methods
init
No arguments.
Method called from "new" before return object.
select
Arguments:
%opts - options with keys
table - object
fields (optional, default: all fields)
filter (optional)
Return values:
$query - object
Example:
my $query = $app->db->query->select(
table => $app->db->users,
fields => [qw(id login)],
filter => {id => 3},
);
join
Arguments:
%opts - options with keys
table - object
alias (optional)
fields (optional, default: all fields)
filter (optional)
join_type (optional, default: 'INNER JOIN')
join_on (optional, default: use foreign keys)
Return values:
$query - object
Example:
my $join_query = $query->join(
table => $app->db->fio,
fields => [qw(name surname)],
filter => ['name' => 'LIKE' => \'Max'],
join_type => 'INNER JOIN',
join_on => ['user_id' => '=' => {'id' => $app->db->users}],
);
left_join
join_type => 'LEFT JOIN'
right_join
join_type => 'RIGHT JOIN'
group_by
Arguments:
@fields
Return values:
$query - object
Example:
my $group_query = $query->group_by(qw(name surname));
having
Arguments:
$expression
Return values:
$query - object
Example:
my $query_with_having = $query->having([cnt => '>=' => \100]);
order_by
Arguments:
@fields - fields or reference to array
Return values:
$query - object
Example:
my $order_query = $query->order_by('id', ['login', 1]);
limit
Arguments:
@limit
Return values:
$query - object
Example:
my $limit_query = $query->limit(100, 200);
distinct
No arguments.
Return values:
$query - object
Example:
my $distinct_query = $query->distinct();
union
Arguments:
$query - object
%opts - options with keys
all - boolean (optional, default: FALSE)
Return values:
$query - object
Example:
my $union_query = $query->union(
$app->db->query->select(
table => $app->db->people,
fields => [qw(id login name surname)]
),
all => FALSE,
);
union_all
all => TRUE
calc_rows
Arguments:
$flag - boolean
Return values:
$query - object
Example:
my $calc_rows_query = $query->calc_rows(TRUE);
all_langs
Arguments:
$flag - boolean
Return values:
$query - object
Example:
my $all_langs_query = $query->all_langs(TRUE);
for_update
No arguments.
Return values:
$query - object
Example:
my $for_update_query = $query->for_update();
filter
get_sql_with_data
Arguments:
%opts - options with keys
offset - number (optional, default: 0)
Return values:
$sql - string
Example:
my $sql = $query->get_sql_with_data();
get_all
No arguments.
Return values:
$data - reference to array
Example:
my $data = $query->get_all();
update
Arguments:
%opts - options with keys
table - object
alias - alias for table (type: string)
data - data for update (type: reference to hash)
filter (optional)
Return values:
$query - object
Example:
my $query = $app->db->query->update(
table => $app->db->users,
alias => 'u',
data => {
login => 'ChuckNorris',
date => {NOW => []},
},
filter => {id => 3},
);
do
Execute query and returns results
No arguments
Return values:
$res - count of a affected rows or -1
Example:
my $res = $query->do();
found_rows
No arguments.
Return values:
$bool
Example:
my $bool = $query->found_rows();
For more information see code and test.