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;
                            }
                    }