Загрузить данные в деталь через связанную сущность.
Здравствуйте!
Есть три сущности:
Order (id)
OrderProduct (id, OrderId, usrDocumentId)
usrDocument (id, usrName)
Необходимо на странице Заказы отобразить все Документы, прямой связи между Заказами и Документами нет, т.к. используется связь многие ко многим.
В sql запрос выглядит следующим образом:
Select d.Name
from Order o
join OrderProduct op on op.OrderId = o.id
join Document d on d.id = op.DocumentId
Как правильно прописать связь в detailColumn?
"DocumentsDetail": {
"schemaName": "DocumentsDetailV2",
"entitySchemaName": "Document",
"filter": {
"masterColumn": "Id",
"detailColumn": "Связь"
},
},
Пока подобные задачи делались через промежуточное представление (делался нужный селект), но понимаю, что это неправильно, и должен быть способ попроще.
Ответ: в detailColumn нужно прописать: [OrderProduct:Document:Id].Order
Нравится
Павел, в detailColumn нужно прописать следующее выражение
detailColumn: "[OrderProduct:Order:Id].Document"
Вам нужно реализовать Ваш метод фильтрации, добавив свойство 'filterMethod' при объявлении детали и в методах реализовать нужную фильтрацию.
Для примера в базовой конфигурации можете посмотреть реализацию для детали Relationships в AccountPageV2.
Спасибо, думал об этом, но стало не на много легче, т.к. не очень понимаю как перевести sql запрос в формат esq.
declare orderId = id_заказ
Select d.usrName
from usrDocument d
join OrderProduct op on op.DocumentId = d.id
where op.OrderId = orderId
Павел, в detailColumn нужно прописать следующее выражение
detailColumn: "[OrderProduct:Order:Id].Document"
Трефилов Павел Сергеевич,
Выше Александр привел пример построения связей.
Вы можете реализовать Вашу задачу либо способом предложенным мной, либо Александром.
В данном случае решение, предложенное Александром 'более красивое'
Спасибо за ответ, но на самом деле правильный запрос выглядит немного иначе. Моя кореневая схема Документы, мне нужно из нее получить Id заказа через промежуточную схему ПродуктыЗаказа.
Связь строится по следующему принципу:
[Имя_присоединяемой_схемы:Имя_колонки_для_связи_присоединяемой_схемы:Имя_колонки_для_связи_текущей_схемы].Колонка_присоединяемой_схемы
Значит связь выглядит так [OrderProduct:Document:Id].Order
Видимо запрос в первом посте ввел в заблуждение Александра.
Трефилов Павел Сергеевич,
Вот в этом и заключается сила community
Совместными усилиями и знаниями нашли самое подходящее решение!