Страница 1 из 1

Поля из многоуровневого списка сущностей в таблицу списка

Добавлено: 02 авг 2026, 11:53
mnhtnn
Привет.
У меня в карточке для сущности Х есть три поля Страна, регион, город реализованные через тип Многоуровневый список сущностей для сущности Город. По умолчанию в таблицу списка я могу вывести только колонку(поле) Город. Вопрос. Как в таблицу списка для сущности Х вывести колонки(поля) Страна и Регион тоже?

Re: Поля из многоуровневого списка сущностей в таблицу списка

Добавлено: 03 авг 2026, 11:07
Fait
Можно двумя путями:
1) Создать ещё два поля с PHP-кодом или SQL-формулой. Вот их то и можно вывести в список, а в них непосредственно отобразить значение.
2) Создать ещё два поля: одно с типом "Сущность Ajax", другое с типом "Многоуровневый список сущностей". И в настройках у них уже указать нужные сущности: у первого сущность "Страны", у второго сущность "Страны" для первого уровня и сущность "Регионы" для второго уровня.

Ну а в целевом поле по итогу указать сущность "Страны" для первого уровня, сущность "Регионы" для второго уровня и сущность "Города" для третьего уровня.

Re: Поля из многоуровневого списка сущностей в таблицу списка

Добавлено: 03 авг 2026, 11:44
Fait
Ну и, если решите через коды действовать:

Это SQL для выбора страны:

Код: Выделить всё

SELECT c.field_222
FROM app_entity_44 a
LEFT JOIN app_entity_22 c
  ON c.id = CAST(SUBSTRING_INDEX(a.field_444, ',', 1) AS UNSIGNED)
WHERE a.id = [id]
SQL для выбора региона:

Код: Выделить всё

SELECT r.field_333
FROM app_entity_44 a
LEFT JOIN app_entity_33 r
  ON r.id = CAST(
    SUBSTRING_INDEX(SUBSTRING_INDEX(a.field_444, ',', 2), ',', -1)
    AS UNSIGNED
  )
WHERE a.id = [id]
И вот вариации на PHP:

Выбор страны:

Код: Выделить всё

$value = [444]; // поле с городом
$parts = array_map('intval', explode(',', $value));
$country_id = ($parts[0] ?? 0);
if ($country_id > 0) {
    $sql = "SELECT field_222 FROM app_entity_22 WHERE id = {$country_id} LIMIT 1";
    $row = db_fetch_array(db_query($sql));
    $output_value = $row['field_222'] ?? '';
}
Выбор региона:

Код: Выделить всё

$value = [444]; // поле с городом
$parts = array_map('intval', explode(',', $value));
$region_id = ($parts[1] ?? 0);
if ($region_id > 0) {
    $sql = "SELECT field_333 FROM app_entity_33 WHERE id = {$region_id} LIMIT 1";
    $row = db_fetch_array(db_query($sql));
    $output_value = $row['field_333'] ?? '';
}
Расшифровка полей:
app_entity_22 - сущность со странами
field_222 - название страны
app_entity_33 - сущность с регионами
field_333 - название региона
app_entity_44 - сущность с городами
field_444 - поле с городом

Re: Поля из многоуровневого списка сущностей в таблицу списка

Добавлено: 24 авг 2026, 13:03
mnhtnn
Спасибо. Выручили.