Store класс
Классы хранилища используются для хранения кэшированных списков ID элементов.
Логическая схема
Логическая схема инициализации нового объекта ProductCollection и получения списка активного продукта.
Логическая схема активной очистки кеша активного продукта.
AbstractStoreWithoutParam
Класс AbstractStoreWithoutParam позволяет быстро создавать хранилища, не использующие параметры в запросе к базе данных. Например: кеширование списка активных брендов.
<?php namespace Lovata\Shopaholic\Classes\Store\Brand;
use Lovata\Toolbox\Classes\Store\AbstractStoreWithoutParam;
use Lovata\Shopaholic\Models\Brand;
/**
* класс ActiveListStore
* @package Lovata\Shopaholic\Classes\Store\Brand
*/
class ActiveListStore extends AbstractStoreWithoutParam
{
protected static $instance;
/**
*Получить список идентификаторов из базы данных
* @return array
*/
protected function getIDListFromDB() : array
{
$arElementIDList = (array) Brand::active()->lists('id');
return $arElementIDList;
}
}
AbstractStoreWithParam
Класс AbstractStoreWithParam позволяет быстро создать хранилище, которое использует один параметр в запросе к базе данных. Например: кеширование списка товаров с фильтром по ID бренда.
<?php namespace Lovata\Shopaholic\Classes\Store\Product;
use Lovata\Toolbox\Classes\Store\AbstractStoreWithParam;
use Lovata\Shopaholic\Models\Product;
/**
* Class ListByBrandStore
* @package Lovata\Shopaholic\Classes\Store\Product
*/
class ListByBrandStore extends AbstractStoreWithParam
{
protected static $instance;
/**
* Получить список ID из базы данных
* @return array
*/
protected function getIDListFromDB() : array
{
$arElementIDList = (array) Product::getByBrand($this->sValue)->lists('id');
return $arElementIDList;
}
}
AbstractStoreWithTwoParam
Класс AbstractStoreWithTwoParam позволяет быстро создать хранилище, которое действительно использует два параметра в запросе к базе данных. Например: кеширование списка заказов с фильтром по идентификатору статуса и идентификатору пользователя.
<?php namespace Lovata\OrdersShopaholic\Classes\Store\Order;
use Lovata\Toolbox\Classes\Store\AbstractStoreWithTwoParam;
use Lovata\OrdersShopaholic\Models\Order;
/**
* Class SortingListStore
* @package Lovata\OrdersShopaholic\Classes\Store\Order
*/
class StatusListStore extends AbstractStoreWithTwoParam
{
protected static $instance;
/**
* Получить список ID из базы данных
* @return array
*/
protected function getIDListFromDB() : array
{
if (empty($this->sAdditionParam)) {
$arElementIDList = (array) Order::getByStatus($this->sValue)->lists('id');
} else {
$arElementIDList = (array) Order::getByUser($this->sAdditionParam)->getByStatus($this->sValue)->lists('id');
}
return $arElementIDList;
}
}