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;