Многие из нас пришли в web после знакомства с массой других технологий программирования. И конечно же знакомы с ORM. Если же вы впервые видите эту абривиатуру, то это еще не значит, что вы не сталкивались с таким подходом. Он втречается очень часто и, возможно, вы просто не знали как это называется.
ORM — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».
Другими словами каждая таблица в коде представляется как одноименный класс, а каждое поле таблицы как свойство класса.
Web конечно же не остался в стороне. И здесь мы имеем средства для использования этого подхода. Одно из таких стредств - Kohana ORM. О нем и пойдет речь в этой заметке.
Легче всего объяснять как с этим работать на сущностях с которыми знакомы все мы. Всем известно какие сущности есть для web-приложения “блог”.
Это сущности: (набор полей в скобках задан как пример и служит лучшему пониманию примеров кода статьи)
- Пользователи ( Таблица users с полями id и name)
- Сообщения блога (Таблица blog_post c полями id, title, text, user_id)
- Комментарии к сообщениям (Таблица comments с полями id, text, post_id)
Для того чтобы использовать ORM вы должны сначала создать модель как наследницу класса ORM. Каждая модель представляет таблицу базы даных. ORM понимает связи между таблицами. Это облегчает наш с вами труд при разработке.
class User_Model extends ORM {}
Для определения связей между таблицами служат специальные свойства
class Blog_Post_Model extends ORM { protected $has_one = array('user'); protected $has_many = array('comments'); }
Свойстава могут быть следующие
- has_one - связь один-к-одному
- has_many - родительская сторона связи один-ко-многим
- belongs_to - дочерняя сторона связи один-ко-многим
- has_and_belongs_to_many - связь многие ко многим
После такого объявления класса как в предыдущем примере мы можем сделать так
$post = ORM::factory('blog_post', 1); // 1 - значение первичного ключа echo $post->user->username; // и так $comment = ORM::factory('comment', 1); $post = $comment->blog_post;
Конечно же можно не только получать значения из таблиц, но и менять данные в таблицах. Для этого есть, например, метод save().
1 2 3 | $post = ORM::factory('blog_post', 1); $post->title = 'New title'; $post->save(); |
Если в строке 3 предыдущего примера вызвать $post->reload(), то title сбросится к сохраненному в БД значению.
С применением ORM можно делать различного вида выбоки. Например:
// Найти статью с первичным ключом равным 1 $object = ORM::factory('blog_post')->find(1); echo $object->title; // Найти статью по заголовку $object = ORM::factory('blog_post')->where('title', $title)->find();
Делать выборку многих строк
$limit = 10; $offset = 30; // Ограничение на количество записей делать не обязательно $posts = ORM::factory('blog_post')->find_all($limit,$offset); foreach($posts as $post) { echo $post->title; }
Вот что такое Kohana ORM. Конечно же данная статья носит лишь ознакомительных характер. Наиболее полную информацию по всем методам класса ORM можно найти на cтранице с документацией по Kohana ORM. Читайте ее для более глубокого понимания. Подписывайтесь на RSS-ленту этого блога, чтобы не пропустить новые интересные статьи.
Tags: Kohanaphp, PHP, php-framework
Спасибо большое.
Можете выложить дамп примера для скачивания?