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

Перенос подсущности на верхний уровень.

Добавлено: 18 фев 2021, 18:10
tax
Доброго времени суток!

Коллеги, посоветуйте как правильней переместить вложенную сущность на верхний уровень. Сам механизм перемещения есть в меню управления сущностями, но мне нужно сохранить (не потерять) связь с родительской сущностью.
Более конкретно... есть Проекты и в них Счета. Нужно вынести Счета и иметь связь с сущностью Проекты.

Re: Перенос подсущности на верхний уровень.

Добавлено: 18 фев 2021, 21:09
nruslan2
Я бы временно ввел бы дополнительное поле заполнил номером родителя (ну и связь заодно) и потом бы переносил.

Re: Перенос подсущности на верхний уровень.

Добавлено: 19 фев 2021, 06:42
support
Связь с родительской сущностью хранится в parent_item_id
Соответственно это значение нужно скопировать в поле Сущность для каждой записи, чтобы сохранилась связь. Можно сделать в phpMyAdmin
При переносе на верхний уровень parent_item_id обнулится.

Re: Перенос подсущности на верхний уровень.

Добавлено: 22 фев 2021, 18:44
tax
в таблице (счета) создал временное поле prg_id

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

ALTER TABLE `app_entity_41` ADD `prg_id` INT NOT NULL AFTER `sort_order`;
Скопировал в это поле значения из parent_item_id

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

UPDATE `app_entity_41` SET `prg_id`=`parent_item_id`
Переместил сущность "Счета" на верхний уровень средствами "руководителя"
Создал Поле с типом Сущность (ID=609)
Скопировал в это поле значения из prg_id

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

UPDATE `app_entity_41` SET `field_609`=`prg_id`
В таблице всё красиво и в списке отображается, но фильтр по этому полю не работает. Только если пересохранить запись, тогда начинает работать фильтр.
Сергей, подскажите, может ещё в какой таблице хранятся связи с сущьностью?

Re: Перенос подсущности на верхний уровень.

Добавлено: 23 фев 2021, 07:08
support
В базе есть таблица app_entity_41_values куда нужно вставить значения из поля 609
Нужно в цикле перебрать все записи из таблицы app_entity_41
и для каждой записи вставить строчку в таблицу app_entity_41_values

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

INSERT INTO `app_entity_41_values` (`items_id`, `fields_id`, `value`) VALUES ('ID записи', 609, 'значения поля 609');