symfony postgres doctrine dynamic relations. Как реализовать с сохранением в базе?

Рейтинг: 0Ответов: 1Опубликовано: 29.05.2023

В общем есть у меня обект вот в таком виде

{
    "delivery":{
    "street":"street name",
    "deliveryDetails": {
    } 
    }
}

deliveryDetails - один из трех объектов

office: {
    "roomSpaceVolume":float
}

machine: {
    "serialNumber":int
}
human: {
    "name":string
}

Как это сохранить в базе? с сохранением связей между зависимостями объектов (doctrine relations). заблаговременно естественно неизвестно какой тип доставки будет. Хранить разные типы нужно в отдельных таблицах. У меня Postgres+Symfony.

Ответы

▲ 0

Попробуйте https://www.doctrine-project.org/projects/doctrine-orm/en/2.15/reference/inheritance-mapping.html#class-table-inheritance

Принцип: общая часть частично разных сущностей хранится в одной общей таблице, различия - в разных, которые имеют реляции с общей. В объектной области все выглядит прозрачно. Однако, 1. нужно иметь поле дискриминанта, на основе которого определяется соединение таблиц (например тип) 2. Каждый тип желательно иметь отдельным классом, наследуемым от одного общего