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;
            }
    }
© 2020 от Garikom