Раньше у нас использовался такой способ доступа к хайлоад блокам (это первый способ)
HighloadBlockTable компилировал нужную нам сущность и после можно было использовать возвращаемый класс и всё работало как надо.
А недавно решили, что будем описывать наши сущности самостоятельно вот так (это второй способ):
Но при таком способе доступа к сущностям Битрикс не может построить джойны к таблицам множественных полей. Он напрямую пытается искать во множественном поле, а там просто сериализованная строка. И теперь у нас работает всё кроме фильтрации по множественным полям. Я не знаю как это решить.
| Код |
|---|
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;
}
} |
HighloadBlockTable компилировал нужную нам сущность и после можно было использовать возвращаемый класс и всё работало как надо.
| Код |
|---|
$Table = getTable("t_people");
$Table::getList(array(
'filter' => array(
'UF_ACTIVE' => true,
'UF_CITY' => 1,
),
'select' => array('*'),
)); |
А недавно решили, что будем описывать наши сущности самостоятельно вот так (это второй способ):
| Код |
|---|
class PeopleTable extends Entity\DataManager {
public static function getTableName() { ... }
public static function getMap() { ... }
}
// И обращаться так
PeopleTable::getList();
|
Но при таком способе доступа к сущностям Битрикс не может построить джойны к таблицам множественных полей. Он напрямую пытается искать во множественном поле, а там просто сериализованная строка. И теперь у нас работает всё кроме фильтрации по множественным полям. Я не знаю как это решить.