[#top] Zippy ERP Преимущества Zippy ERP Общие сведения Руководство пользователя Документация разработчика Zippy склад Общие сведения Руководство пользователя Документация разработчика Модуль интернет-магазина Модуль работы с автозапчастями Другие проекты Фреймворк Zippy Фреймворк Zippy.NET ZDB Zippy Note Новости F.A.Q ZDB Библиотека для доступа к БД Библиотека представляет собой, Active Record построеный на функциональности библиотекаи ADODB. Библиотека позваляет работать с бизнес-сущностями не используя маппинг или иной способ явного указания связи полей бизнес-сущности с полями таблицы БД. Основной репозитарий на гитхабе Описание идеи в статье на хабре Документация по классам библиотеки ZDB\DB Класс, реализующий конект к БД. Синглетон-обертка для ADODB. Для инициализации необходимо передать параметры соединения. \ZCL\DB\DB::config($host, $dbname,$dbuser,$dbpass,[$driver=mysqli]); Получение конекта (для нативных запросов) DB::getConnect(); ZDB\Entity Основной класс библиотеки, являющийся базовым для всех Entity. К примеру есть таблица пользователей CREATE TABLE `users` ( `username` varchar(255) , `updated` date , `user_id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`user_id`) ) Создадим класс сущности Пользователь, на основе класса ZDB\Entity /** * @table=users * @keyfield=user_id */ class User extends Entity{ protected function init() { $this->user_id = 0; $this->updated = time(); } protected function afterLoad() { $this->updated = strtotime($this->updated); } } Если у нас есть представление для выборки пользователей например usersview тогда мы указываем в псевдоаннотациях @view=usersview . В этом случае выборка данных будет идти из представления а запись в таблцу. Метод init() используется для инициализации полей. Метод afterLoad() вызывается после загрузки содержимого из соответствующей строки таблицы БД. В данном случае преобразовывает дату в timestamp для универсальности дальнейшей работы. Оба метода необязательны. Самое важное - имена полей, к которым идет обращение при работе с экземпляром сущности должны совпадать с именами в таблице БД. Все остальное будет автоматизировано библиотекой ADODB. При сохранении данных библиотека сама определит типы полей Бд и сформирует SQL запрос с соответствующими преобразованиями. Никакого специального маппинга полей или генерации структур не нужно. Некоторые примеры работы с Entity: //загрузка пользователя. $user = User::load($id); //записать пользователя с новыми значениями. $user->username='newname'; $user->updated = time(); $user->save(); //новый пользователь //если $user->user_id равен 0 создается новая запись и полю $user->user_id //присваивается значение из автоинкрементного поля. $user = new User(); $user->username='newname'; $user->save(); //удаление пользователя User::delete($id); //найти всех пользователей кроме админа $users = User::find("username 'admin'"); //найти количество пользователей $users = User::findCnt(); //вернуть имена пользователей в виде массива ключ/значение // например для комбобокса $users = User::findArray("username","","username asc"); Класс сущности - обычный класс и может быть расширен любыми необходимыми методами. Например проверка юзера по логину и паролю. Поддержать проект: карта ПриватБанка 5168755627010529 (М.Л.Г.) Обратная связь Имя Email Сообщение Закрыть Отправить Copyright © 2015 | admin{at}zippy.com.ua | Обратная связь | Форум | F.A.Q | Мы в Фейсбуке