Leap — не просто еще одна ORM. Он предоставляет функции, которых в других ORM нет. Leap также позволяет добавить новую базу данных SQL драйвера и обеспечивает соединение с базой данных, среду для управления его ресурсами. Кроме того, Leap рассматривает многие проблемы зависимости, сохраняющиеся в других ORM, следуя слабо связанной и тесно интегрированной методологии программирования.
К сожалению, я не нашел информации об этом замечательном ORM на Хабрахабре, поэтому попытаюсь исправить эту ситуацию.
0. Особенности
- Работает со всеми основными базами данных.
Плагины для DB2, Drizzle, Firebird, MariaDB, MS SQL, MySQL, Oracle, PostgreSQL и SQLite. - Стандартизация построения SQL-запросов.
Билдер классов удаляет различия между разными SQL диалектами. - Обеспечивает типы данных полей.
Ставит PHP на следующий уровень, принимая сильные типы данных. - Легко расширяемый.
- Хорошо документирован.
Много примеров и учебных пособий, а также имеет удобный для чтения API.
1. Преимущества
Таблица сравнения с другими ORM.
LEAP | K3 ORM | Jelly | Sprig | |
---|---|---|---|---|
Документация | Да | Да | Да | Частично |
Пользовательский API | Да | Более менее | Более менее | Да |
Легко расширяемый | Да | Более менее | Более менее | Более менее |
Поддержка нескольких SQL диалектов | Да | Отчасти | Отчасти | Отчасти |
Подключение новой БД | Да | Нет | Нет | Нет |
Кэширование запросов | Да | Да | Да | Да |
Query Builder | Да | Да | Да | Да |
Сильно типизированный | Да | Нет | Более менее | Более менее |
Нецелое число первичного ключа | Да | Нет | Нет | Да |
Составные ключи | Да | Нет | Нет | Частично |
Псевдонимы полей (aliases) | Да | Нет | Да | Нет |
Адаптеры полей | Да | Нет | Нет | Нет |
Связь между полями | Да | Да | Да | Да |
Чтение моделей | Да | Нет | Нет | Нет |
Автогенерация HTML-форм | Да | Нет | Нет | Да |
Класс Auth | Да | Да | Да | Да |
Modified Preorder Tree Traversal (MPTT) | Да | Да | Да | Да |
2. Установка
- Для начала скачаем Leap ORM под свою версию Kohana в подходящем формате.
- Файлы из архива требуется распаковать в папку modules/leap на своем сервере.
- Подключаем модуль в application/bootstrap.php.
Kohana::modules(array( ... 'leap' => MODPATH . 'leap', ... ));
- Следующим шагом настроим подключение к базе данных в файле modules/leap/config/database.php.
<?php defined('SYSPATH') OR die('No direct script access.'); $config = array(); $config['default'] = array( 'type' => 'SQL', // string (e.g. SQL, NoSQL, or LDAP) 'dialect' => 'MySQL', // string (e.g. DB2, Drizzle, Firebird, MariaDB, MsSQL, MySQL, Oracle, PostgreSQL, or SQLite) 'driver' => 'Standard', // string (e.g. Standard, Improved, or PDO) 'connection' => array( 'persistent' => FALSE, // boolean 'hostname' => 'localhost', // string 'port' => '', // string 'database' => '', // string 'username' => 'root', // string 'password' => 'root', // string 'role' => '', // string ), 'caching' => FALSE, // boolean 'charset' => 'utf8', // string ); return $config; ?>
- Можно начинать использовать Leap ORM для написания моделей.
3. Создаем подключение к базе данных
В Leap ORM можно подключиться к базе данных несколькими методами, перед подключением не забудьте настроить соединение в файле modules/leap/config/database.php.
- Самый простой способ подключения к базе данных — использование метода factory класса DB_Connection.
$connection = DB_Connection::factory('default'); // подключаемся $connection->open(); // выполняем запрос $results = $connection->query('SELECT * FROM `user`;'); // закрываем соединение с базой данных $connection->close();
Обратите внимание, что соединение должно быть открыто и закрыто с помощью одного метода.
- Для этого метода нужно использовать DB_Connection_Pool, чтобы подключиться к базе данных. Использование такой схемы предпочтительнее, так как подключение делает за Вас Leap.
// подключаемся $connection = DB_Connection_Pool::instance()->get_connection('default'); // выполняем запрос $results = $connection->query('SELECT * FROM `user`;');
4. Запросы
Переписывать всю документацию по выполнению SQL-запросов, наверно будет не правильно, поэтому ниже ссылки на официальные туториалы. Код интуитивно понятен, разобраться будет легко, переводить всю доку лучше на github'е в отдельном репозитории.
- Выполнение SQL-запросов
- Получение результата выполненного запроса
- Building SQL-запросов:
- Добавление данных в таблицу (INSERT)
- Получение данных из таблицы (SELECT)
- Изменение данных в таблице (UPDATE)
- Удаление данных (DELETE)
- Расширение Query Builder
- Определение и пример модели
- Карта модели:
- Использование модели
Официальный сайт — orm.spadefootcode.com
Примеры и туториалы — orm.spadefootcode.com/tutorials
Leap ORM API — orm.spadefootcode.com/api/annotated.html
GitHub — github.com/spadefoot/kohana-orm-leap
BugТрекер — github.com/spadefoot/kohana-orm-leap/issues
Автор: seweb