Поиск записей
Выполнение SELECT-запросов.
1 2 3 4 5 6 7 |
my $rs = $schema->resultset('Recipe')->search({ author_id => $author_id, }, { order_by => { -desc => 'id' }, # ORDER BY id DESC rows => 10, page => 2, # LIMIT x, y columns => [qw/id name author_id/], # SELECT id, name, author_id }); |
Примечание: у postgresql работа с ограничениями на количество строк идет не только через LIMIT, но и OFFSET.
1 2 3 4 5 6 7 8 9 |
my $rs = $schema->resultset('User')->search({ 'me.id' => '26753', 'friend.id' => '345' }, { join => [ 'friends' ], prefetch => [ 'companies', 'friends' ], custom_prefetch => [ 'hobbies' ], } ); |
Для выполнения запроса SELECT * FROM table нужно выполнить запрос без параметров:
1 |
my $rs = $schema->resultset('User')->search({}); |
Удаление записей
Простой DELETE-запрос:
1 |
$schema->resultset('Recipe')->find($id)->delete; |
Добавление записей
Простой INSERT-запрос:
1 2 3 4 |
my $user = $schema->resultset('User')->create({ login => $login, email => $email || undef, }); |
Если строка с заданными параметрами не найдена, выполняется INSERT-запрос. Если строка найдена - UPDATE. Поиск осуществляется по primary key или unique key.
1 2 3 4 5 |
$schema->resultset('User')->update_or_create({ id => $id, login => $login, email => $email || undef, }); |
Обновление записей
Простой UPDATE-запрос:
1 2 |
$schema->resultset('User')->search({ id => $form->{id} }) ->update({ delete_flag => 1 }); |
Полезные ссылки
Шпаргалка по работе с DBIx::Class
search.cpan.org: DBIx::Class::ResultSource
search.cpan.org: DBIx::Class::ResultSet - команды search, single, next, update, create и т.д. А так же параметры join, prefetch и пр.
search.cpan.org: DBIx::Class::Schema - команды resultset, connect, txn_begin и т.д.
Здравствуйте Наталья,
Я просмотрел ваш блог и нашёл много интересной информации по поводу разработки приложений.
Я подумал может быть вам будет интересно попробовать один из наших инструментов для работы с базами данных или инструменты для работы с кодом (http://www.devart.com/ru/products.html)
Если у вас есть свободное время вы не могли бы написать небольшой обзор или отзыв на наш инструмент в вашем блоге. Взамен я смогу предоставить вам бесплатную лицензию нашего продукта.
Если у вас есть какие-нибудь другие идеи по нашему сотрудничеству, то я готов их выслушать.
Что скажете?
С уважением,
Денис
Здравствуйте, Денис! Я быстро просмотрела указанный сайт и пришла к выводу, что надо ознакомиться более внимательно :) Так что, отвечу чуть позднее, до конца этой рабочей недели.