Раньше у нас использовался такой способ доступа к хайлоад блокам (это первый способ)
[CODE]function getTable($tableCode) {
$tableCursor = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('TABLE_NAME' => $tableCode)));
if ($tableInfo = $tableCursor->fetch()) {
$entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($tableInfo);
return $entity->getDataClass();
} else {
return false;
}
}[/CODE]
HighloadBlockTable компилировал нужную нам сущность и после можно было использовать возвращаемый класс и всё работало как надо.
[CODE]$Table = getTable("t_people");
$Table::getList(array(
'filter' => array(
'UF_ACTIVE' => true,
'UF_CITY' => 1,
),
'select' => array('*'),
));[/CODE]
А недавно решили, что будем описывать наши сущности самостоятельно вот так (это второй способ):
[CODE]class PeopleTable extends Entity\DataManager {
public static function getTableName() { ... }
public static function getMap() { ... }
}
// И обращаться так
PeopleTable::getList();
[/CODE]
Но при таком способе доступа к сущностям Битрикс не может построить джойны к таблицам множественных полей. Он напрямую пытается искать во множественном поле, а там просто сериализованная строка. И теперь у нас работает всё кроме фильтрации по множественным полям. Я не знаю как это решить.
[CODE]function getTable($tableCode) {
$tableCursor = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('TABLE_NAME' => $tableCode)));
if ($tableInfo = $tableCursor->fetch()) {
$entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($tableInfo);
return $entity->getDataClass();
} else {
return false;
}
}[/CODE]
HighloadBlockTable компилировал нужную нам сущность и после можно было использовать возвращаемый класс и всё работало как надо.
[CODE]$Table = getTable("t_people");
$Table::getList(array(
'filter' => array(
'UF_ACTIVE' => true,
'UF_CITY' => 1,
),
'select' => array('*'),
));[/CODE]
А недавно решили, что будем описывать наши сущности самостоятельно вот так (это второй способ):
[CODE]class PeopleTable extends Entity\DataManager {
public static function getTableName() { ... }
public static function getMap() { ... }
}
// И обращаться так
PeopleTable::getList();
[/CODE]
Но при таком способе доступа к сущностям Битрикс не может построить джойны к таблицам множественных полей. Он напрямую пытается искать во множественном поле, а там просто сериализованная строка. И теперь у нас работает всё кроме фильтрации по множественным полям. Я не знаю как это решить.