Структура таблицы местоположений 2.0 в Bitrix
Наткнулся на статью Получение местоположений через API Битрикс c поиском по select. . Там есть код
\Bitrix\Main\Loader::includeModule('sale');
$res = \Bitrix\Sale\Location\LocationTable::getList(array(
'filter' => array('=NAME.LANGUAGE_ID' => LANGUAGE_ID, 'TYPE_CODE' => 'CITY'),
'select' => array('*', 'NAME_RU' => 'NAME.NAME', 'TYPE_CODE' => 'TYPE.CODE')
));
while($item = $res->fetch())
{
echo '';
print_r($item['NAME_RU']);
echo '';
}
В связи со строкой
$res = \Bitrix\Sale\Location\LocationTable::getList(array(
'filter' => array('=NAME.LANGUAGE_ID' => LANGUAGE_ID, 'TYPE_CODE' => 'CITY'),
'select' => array('*', 'NAME_RU' => 'NAME.NAME', 'TYPE_CODE' => 'TYPE.CODE')
));
возникли следующие вопросы:
Какова структура класса
\Bitrix\Sale\Location\LocationTable
(перечислите все его поля)? (Что означают'=NAME.LANGUAGE_ID' => LANGUAGE_ID, 'TYPE_CODE' => 'CITY'
и'*', 'NAME_RU' => 'NAME.NAME', 'TYPE_CODE' => 'TYPE.CODE'
?)Я искал в гугле \Bitrix\Sale\Location\LocationTable. Нашел LocationTable, но там не указаны свойства класса, в частности
'=NAME.LANGUAGE_ID' => LANGUAGE_ID, 'TYPE_CODE' => 'CITY'
и'*', 'NAME_RU' => 'NAME.NAME', 'TYPE_CODE' => 'TYPE.CODE'
. Приведите страницы документации по этому вопросу.Что означает знак
=
в записи'=NAME.LANGUAGE_ID' => LANGUAGE_ID
?
Ответы (1 шт):
- Структура: https://bxapi.ru/src/?module_id=sale&name=LocationTable::getMap, там перечислены все поля и ссылки.
Поле NAME является ссылкой (JOIN) на другую таблицу, типа Bitrix\Sale\Location\Name\Location, она описана в классе Bitrix\Sale\Location\Name\LocationTable. Аналогично определено и поле TYPE.
В фильтре '=NAME.LANGUAGE_ID' => LANGUAGE_ID
означает, что значение поля LANGUAGE_ID связанной таблицы должно быть равно текущей константе LANGUAGE_ID - текущему языку.
'TYPE_CODE' => 'CITY'
- здесь TYPE_CODE определено в 'select' и является алиасом для TYPE.CODE, поля CODE другой связанной таблицы TYPE. Это поле должно быть равно значению 'CITY'.
'*'
- выбираем все поля из основной таблицы, 'NAME_RU' => 'NAME.NAME'
- из таблицы NAME берём поле NAME под алиасом NAME_RU, 'TYPE_CODE' => 'TYPE.CODE'
- из таблицы TYPE берём поле CODE под алиасом TYPE_CODE.
- знак
=
означает, что используется точное сравнение строк (по умолчанию для полей типа строка используется LIKE).