This repository has been archived by the owner on Jan 10, 2023. It is now read-only.
Releases: arrilot/bitrix-models
Releases · arrilot/bitrix-models
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
У Битрикса есть особенность связанная с обработкой множественных пользовательских свойств в CBlockSection::GetList().
По-умолчанию, всё ок, возвращается массив
array(2) {
[0]=>
string(1) "1"
[1]=>
string(1) "0"
}
Но если передавать параметры для постраничной навигации (nPageSize, то есть по-сути offset/limit), то он почему-то перестаёт их десериализовать и получаем.
string(50) "a:2:{i:0;s:1:"1";i:1;s:1:"0";}"
В новой версии bitrix-models мы подчищаем за Битриксом и автоматически десериализуем то что недесериализовано.
До этого например getList() и first() у SectionQuery возвращали данные отформатированные по-разному.
Если вы вдруг вручную где-то проводили эту десериализацию, то после обновления до 0.6.2 её надо убрать, но в целом это bugfix
0.6.1
0.6.0
Новые возможности и исправления:
- Добавлена новая модель D7Model, которую можно использовать для работы с произвольными таблицами описанными при помощи сущностей D7 или Хайлоадблоков
- Добавлена возможность кэшировать запросы любых моделей через
->cache($minutes)
- Добавлен воркараунд для проблемы "Too many tables; MySQL can only use 61 tables in a join." в первой версии инфоблоков. Нужно задать константу IBLOCK_VERSION=1 в классе-модели.
- Добавлена возможность использования GetNext($bTextHtmlAuto, $use_tilda) вместо Fetch() для ElementModel, SectionModel и UserModel. до этого момента всегда жестко использлвался Fetch().
- В onBeforeSave(), onBeforeCreate(), onBeforeUpdate(), onBeforeDelete теперь можно модифицировать поля объекта через $this->fields. Раньше в этом не было смысла так как эти поля не использвались, а использовалась копия которую мы передаём изначально.
- Также в onBeforeUpdate() и onBeforeSave() теперь доступен массив $this->fieldsSelectedForSave в котором содержатся ключи полей которые мы собираемся обновлять.
- В onAfter....($result) событиях теперь доступен массив ошибок через $this->eventErrors;
- Пакет теперь поддерживает illuminate 5.5
Изменения нарушающие обратную совместимость
- Для ElementModel, SectionModel и UserModel если при save/update/delete возникает ошибка внутри Битрикса (например не задано название элемента инфоблока), то выбрасывается исключение \Arrilot\BitrixModels\Exceptions\ExceptionFromBitrix с этой ошибкой/ошибками вместо того чтобы просто вернуть false. Для create это и раньше так было, но выбрасывался просто \Exception.
Все эти исключения выбрасываются уже ПОСЛЕ событий onAfterCreate, onAfterUpdate, OnAfterSave, OnAfterDelete