CampaignItem

Внимание! Мы рекомендуем вам прочитать разделы Архитектура, Класс ElementItem, Класс ElementCollection для полного понимания архитектуры проекта.

Внимание! CampaignItem расширяет Класс ElementItem. Все доступные методы класса ElementItem вы можете найти в разделе

Список полей
Имя Тип Описание
id int
                            
                        
    |date_begin|\October\Rain\Argon\Argon|  |
    |date_end|\October\Rain\Argon\Argon|  |
    |discount_type|string|Available values: fixed, percent.  |
    |discount_value|float|  |
    |description|string|  |
    |name|string|  |
    |preview_text|string|  |
    |product|[ProductCollection](modules/product/collection/collection.md)|  |
    |promo_block|[PromoBlockItem](modules/promo-block/item/item.md)|  |
    |promo_block_id|int|  |
Расширение

Вы можете добавить настраиваемые поля в $cached массив модели Кампания.

                            
                        
    Campaign::extend(function($obCampaign) {
        /** @var Campaign $obCampaign */
        $obCampaign->fillable[] = 'my_field';
    
        $obCampaign->addCachedField(['my_field']);
    });
    ...
    
    $obCampaignItem = CampaignItem::make(1);
    echo $obCampaignItem->my_field;

Вы можете добавить настраиваемые поля в массив кэшированных данных, используя свой собственный метод. Вам нужно добавить динамический метод в класс CampaignItem и добавить имя вашего метода в массив $arExtendResult.

                            
                        
    CampaignItem::extend(function($obCampaignItem) {
        /** @var CampaignItem $obCampaignItem */
        $obCampaignItem->arExtendResult[] = 'addMyProperty';
    
        $obCampaignItem->addDynamicMethod('addMyProperty', function() use ($obCampaignItem) {
            /** @var Campaign $obCampaign */
            $obCampaign = $obCampaignItem->getObject();
            $obCampaignItem->setAttribute('my_property', $obCampaign->my_property);
         });
    });
    ...
    
    $obCampaignItem = CampaignItem::make(1);
    echo $obCampaignItem->my_property;