Отправляет email-рассылки с помощью сервиса Sendsay

Создание CMS

  Все выпуски  

Создание CMS - Часть 3


Модель данных. Часть 3

В предыдущей статье на примере создания объектной модели простого сайта производились одиночные загрузки сущностей из базы данных по их идентификаторам конструкцией Object::Create($id), при этом мы знали, у какой сущности (чаще всего класса), какой идентификатор, так как сами создавали эти сущности и в крайнем случаи могли просто заглянуть в базу данных. На практике загружать сущности по идентификатору проблематично, если нас интересуют сущности, о существовании которых можно только догадываться, то есть, не имея информации об их идентификаторах. Более того существует необходимость загружать несколько сущностей разом, отвечающих некоторым условиям.

В магазине, например, мы не выбираем товар по его серийному номеру или штрих-коду, не зная при этом, что он означает – мы смотрим на свойства товара интересующие нас. На главной странице сайта, опять же для примера, необходимо выводить последние новости, что сводится к выборке из базы данных (объектной модели данных) 10 объектов класса «Новость» с сортировкой по дате их создания. Для осуществления подобных запросов необходим гибкий способ описания условий выборки сущностей – условий поиска с учетом особенностей объектной модели. На основе условия необходимо создавать SQL код для непосредственной выборки из БД идентификаторов сущностей удовлетворяющих условию, имея идентификаторы – имеем сущности.

Для создания условия поиска используется объектный подход. Из объектов представляющих логические и другие функции создаётся иерархия, теоретически её можно интерпретировать в подобие математической функции. Ниже пример условия для получения сущностей класса «news». Расшифровывается следующим образом: выбрать сущности (Q::Entity), принадлежащие классу (Q::IsClass), у которого атрибут ’sys_name’ (Q::Attrib) равен значению ‘news’ (Q::Comp).

$cond = Q::Entity(  
            Q::IsClass(  
                Q::Comp(Q::Attrib('sys_name'), '=', 'news')  
            )  
);  

Читать дальше →

© Владимир Шестаков. ICQ: 209-504-733. http://boolive.ru

В избранное