Как и у большинства фреймворков, у kohana есть модуль для работы с базой данных на основе объектов – ORM. Полезность и удобство этого модуля сейчас никто не ставит под сомнение. Многие задачи программирования решаются с помощью ORM. ORM это не только удобство, но и универсальность кода, другими словами: любому программисту использующему ORM будет достаточно просто понять код другого разработчика.
Основные методы и приемы использования ORM.
- Получение данных из таблицы
//получаем все записи из таблицы "users". $users = ORM::factory('user') ->find_all(); //получаем все записи из таблицы "users" //с условием-фильтром по слову "victor" в поле "name". $users = ORM::factory('user') ->where('name', 'LIKE', "%victor%")->find_all(); //получаем одну запись со значением поля "name"="victor". $user = ORM::factory('user') ->where('name', '=', "victor")->find(); еще вариант: $user = ORM::factory('user', $user_id); что соответствует такому варианту синтаксиса $user = ORM::factory('user')->where('id', '=', $user_id)->find();
Основной список методов для выборки элементов:
- where($column, $op, $value) – условие отбора элементов
- and_where($column, $op, $value) – дополнительное “И” условие отбора элементов
- or_where($column, $op, $value) – дополнительное “ИЛИ” условие отбора элементов
- order_by($column, $direction = NULL) – порядок сортировки элементов
- limit($number) – количество отбираемых элементов
- group_by($columns) – группировка элементов по полю
- Проверка отобранных данных
- Для единичной записи:
$user = ORM::factory('user')->where('name', '=', "victor") ->find(); if($user->loaded()) { //Здесь пишем код, который выполняется, если запись найдена } else { //Здесь пишем код если запись не найдена }
- Для работы с несколькими записями:
$users = ORM::factory('user')->where('name', 'LIKE', "%victor%") ->find_all(); if($users->count()>0) { //Здесь пишем код, который выполняется, если записи найдены } else { //Здесь пишем код если записи не найдены }
- Для единичной записи:
- Сохранение/создание данных в таблице
- Сохраняем данные в имеющуюся запись в таблице базы данных:
$user = ORM::factory('user', $user_id); $user->name = 'alex'; $user->phone = '111-11-11'; $user->save();
(если запись с id=$user_id не будет обнаружена в таблице, то ORM создаст новую запись с указанными данными)
- Создаем новую запись в таблице базы данных:
$user = ORM::factory('user'); $user->name = 'max'; $user->phone = '222-22-22'; $user->save();
- Сохраняем данные в имеющуюся запись в таблице базы данных:
- Удаление данных из таблицы
$user = ORM::factory('user', $user_id); $user->delete();
В ORM от kohana есть возможность работы с данными через связи: “Один к одному”, “Один ко многим”, “Многие ко многим” и “Связь через”. О том как их использовать постараюсь описать в следующем посте.