Broker
Методы
При отрисовке сложных интерфейсов часто бывает, что в разных местах происходит загрузка связанных данных из одной и той же таблицы.
Например, получение имен, привязанных к элементам CRM пользователей.
Чтобы не делать повторных запросов был разработан абстрактный класс Service\Broker
.
Его основная задача - лёгкий доступ к связаным данным с кешированием.
Не стоит делать запросы в цикле вида
while($item = $list->fetch()) { $data = $broker->getById($item['USER_ID']); }
Класс является абстрактным. Способ и формат получаемых данных определены в Наследниках.
Инстанс брокера следует получать через контейнер.
Метод | Описание | С версии |
---|---|---|
public function getById(int $id) |
Вернет данные по идентификатору $id. Если данные были загружены ранее, они будут взяты из кеша. | |
public function getBunchByIds(array $ids): array |
Вернет данные по массиву идентификаторов $ids, где ключ - идентификатор, а значение - данные по нему.
Если данные были загружены ранее, они будут взяты из кеша. На получение отсутствующих данных в кеше будет произведен отдельный запрос. |
Наследники
Service\Broker\User
Предоставляет данные о пользователях.
Каждая запись о пользователе является массивом следующей структуры:
ID
- идентификатор;NAME
- имя;SECOND_NAME
- отчество;LAST_NAME
- фамилия;TITLE
- обращение;WORK_POSITION
- должность;FORMATTED_NAME
- полное имя;SHOW_URL
- ссылка на профиль;PERSONAL_PHOTO
- идентификатор файла аватара;PHOTO_URL
- ссылка на аватар.
Этот класс имеет дополнительный метод:
Метод | Описание | С версии |
---|---|---|
public function getName(int $id): ?string |
Вернет полное имя пользователя по его идентификатору. |
Service\Broker\Contact
Предоставляет данные о контактах CRM.
Каждая запись о контакте является ORM-объектом таблета Bitrix\Crm\ContactTable
.
Service\Broker\Company
Предоставляет данные о компаниях CRM.
Каждая запись о компании является ORM-объектом таблета Bitrix\Crm\CompanyTable
.
Service\Broker\TypePreset
Отдельно стоит упомянуть брокер пресетов для настроек смарт-процессов.
Он не является наследником класса Service\Broker, но работает по схожим принципам.
Класс будет подвергнут рефакторингу, не рекомендуется использовать его напрямую, только через событие.
Имеет следующие публичные методы:
Метод | Описание | С версии |
---|---|---|
public function getList(): array |
Вернет список пресетов. | |
public function getPredefinedPresets(): array |
Вернет список предустановленных пресетов. | |
public function collectPresetsByEvent(): array |
Бросает событие onCollectTypePresets модуля CRM. В результате выполнения обработчика события по ключу presets должен попасть массив пресетов соответствующей структуры.
Вернет массив полученных из обработчиков пресетов. | |
public function getCategories(): array |
Вернет массив разделов для пресетов. |
Примеры
use Bitrix\Crm\Service; $contactBroker = \Bitrix\Crm\Service\Container::getInstance()->getCompanyBroker(); // here the contact will be queried $contact = $contactBroker->getById(1); echo $contact->getName(); // here data will be retrieved from cache $contact = $contactBroker->getById(1);