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

Все вопросы/проблемы по установке и использовании.
Ответить
mnhtnn
Спонсор
Спонсор
Сообщения: 69
Зарегистрирован: 15 июн 2017, 08:36
Имя: Дмитрий Кирсанов
Откуда: Уфа

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

Сообщение mnhtnn »

Привет.
У меня в карточке для сущности Х есть три поля Страна, регион, город реализованные через тип Многоуровневый список сущностей для сущности Город. По умолчанию в таблицу списка я могу вывести только колонку(поле) Город. Вопрос. Как в таблицу списка для сущности Х вывести колонки(поля) Страна и Регион тоже?
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1181
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

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

Сообщение Fait »

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

Ну а в целевом поле по итогу указать сущность "Страны" для первого уровня, сущность "Регионы" для второго уровня и сущность "Города" для третьего уровня.
Каталог полезных плагинов для вас: viewtopic.php?t=9512
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1181
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

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

Сообщение 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 - поле с городом
Каталог полезных плагинов для вас: viewtopic.php?t=9512
Ответить