Одновременное использование моделей Элемента и Секции
vkryukov76 opened this issue · 3 comments
vkryukov76 commented
Случайно обнаружил такой баг:
Если в коде используются модели Элемента и Секции, то в свойство модели bxObject
записывается класс первой вызванной модели.
Добавил дополнительную проверку в код
if (static::$bxObject && (get_class(static::$bxObject) == static::$objectClass) ) {
return static::$bxObject;
}
bitrix-models/src/Models/BitrixModel.php
Lines 361 to 363 in ad79f2a
Но не уверен в правильности решения
arrilot commented
Привет, можешь показать пример твоего кода где проявляется ошибка?
vkryukov76 commented
Что-то вроде этого:
CModule::IncludeModule('iblock');
use Arrilot\BitrixModels\Models\SectionModel;
use Arrilot\BitrixModels\Models\ElementModel;
class SuperSection extends SectionModel
{
/**
* Corresponding iblock id.
*
* @return int
*/
const IBLOCK_ID = 42;
}
class SuperElement extends ElementModel
{
/**
* Corresponding iblock id.
*
* @return int
*/
const IBLOCK_ID = 42;
}
$elements = SuperElement::query()->select('ID', 'NAME')->getList();
$sections = SuperSection::query()->select('ID', 'NAME')->getList();
/*
$sections = SuperSection::query()->select('ID', 'NAME')->getList();
$elements = SuperElement::query()->select('ID', 'NAME')->getList();
*/
var_dump($elements->toArray());
var_dump($sections->toArray());
arrilot commented
Спасибо, поправлено в 0.5.1
Что-то многовато магии в пхпшных статических свойствах.