PHPShopOrm

Материал из PHPShop

Перейти к: навигация, поиск

Для создания унифицированных SQL запросов к БД используется класс PHPShopOrm. Использование PHPShopOrm позволяет 1-2 строками получится результат SQL запроса к БД с широкими возможностями по выборке и дальнейшей обработки результата.

Для загрузки класса используется запись:

PHPShopObj::loadClass("orm");
$PHPShopOrm = new PHPShopOrm($GLOBALS['SysValue']['base']['table_name14']);

В качестве аргумента класс принимает значение имени таблицы.


Содержание

Выборка данных

Для выборки данных командой select используется конструкция:

$data=$PHPShopOrm->select(array('id','name'),array('id'=>'=10'),array('order'=>'id DESC'),array('limit'=>1));

Другая запись этой команды:

$PHPShopOrm->sql='select id,name from phpshop_categories where id=1 order by id DESC limit 1';
$data=$PHPShopOrm->select();

Унифицированный вариант записи для сложных выборок:

$data=$PHPShopOrm->query('select id,name from phpshop_categories where id=1 order by id DESC limit 1');

Обработка полученной информации

Если при select запросе указывается параметр limit=1 или в результате выборки находится rо 1 поле, то возвращается одномерный массив. Для его обработки используется конструкция:

$data=$PHPShopOrm->select(array('id','name'),array('id'=>'=10'),array('order'=>'id DESC'),array('limit'=>1));
extract($data);
echo "Id=".$id;
echo "Name=".$name;

Если указан параметр limit>1, то резульататом работы функции будеи многомерный массив. Для его обработки используется конструкция:

$data=$PHPShopOrm->select(array('id','name'),array('id'=>'=10'),array('order'=>'id DESC'),array('limit'=>100));
if(is_array($data))
foreach($data as $row){
extract($row);
echo "Id=".$id;
echo "Name=".$name;
}

Обновление данных

Для обновления данных командой update используется конструкция:

$PHPShopOrm->update($_REQUEST,array('id'=>'=10'));

В качестве первого аргумента можно использовать массив $_POST, $_GET или записать его в явном виде array('name_new'=>'example').

Lifebelt.png Ключ массива должен содержать префикс _new для автоматического поиска и обновления БД.

Другая запись этой команды:

$PHPShopOrm->sql='update from phpshop_category set name="example" where id=10';
$PHPShopOrm->update();

Унифицированный вариант записи для сложных выборок:

$PHPShopOrm->query('update from phpshop_category set name="example" where id=10');


Вставка данных

Для обновления данных командой insert используется конструкция:

$PHPShopOrm->insert(array('name_new'=>'Hi Test2'));

В качестве первого аргумента можно использовать массив $_POST, $_GET или записать его в явном виде array('name_new'=>'example').

Lifebelt.png Ключ массива должен содержать префикс _new для автоматического поиска и обновления БД.


Другая запись этой команды:

$PHPShopOrm->sql='insert into phpshop_category set name="Hi Test2"';
$PHPShopOrm->insert();

Унифицированный вариант записи для сложных выборок:

$PHPShopOrm->query('insert into phpshop_category set name="Hi Test2"');


Удаление данных

Для обновления данных командой delete используется конструкция:

$PHPShopOrm->delete(array('id'=>'=10'));

Кэширование

PHPShopOrm позволяет запоминать результаты выборок и заносить их в глобальный массив памяти, при последующем запросе используя ключ записи можно получить данные пряммо из кэша без обращения к БД.

Для включения кэширования служит свойство $cache, для управления данными в кэше используется свойство $cache_format, пример:

$PHPShopOrm->cache=true;
$PHPShopOrm->cache_format=array('content'); // Удаляем больше данные
$data=$PHPShopOrm->select(array('id','name'),array('id'=>'=10'),array('order'=>'id DESC'),array('limit'=>100));

Кэш записывается в переменную $GLOBALS['Cache'][имя_таблицы]. Для наглядности в панель отладки все данные по внутренней памяти и кэша вынесены в закладку Session & Cache.

Следует учитывать, что в кэш заносятся данные по ключу ID, если выборка идет с указанием поля для выборки array('id'=>'=10'), то кэш будет возвращен, во всех других случаях будет произведен новый запрос к БД.

Следует удалять из переменной кэша большие объемы данных, которые приводят к перерасходу ресурсом, для этого используется свойство $cache_format, в котором через запятую перечисляются поля для удаления из массива кэша (описание товара и т.д.)