Создание отображения «один ко многим», где многие могут быть объектами разных типов - PullRequest
1 голос
/ 17 марта 2011

Я изучаю возможность переоборудования существующей базы данных для использования Doctrine.

У меня есть три таблицы: StockRequest, SalesOrder, WorkOrder . StockRequest имеет поля Тип и ТипNo . Тип используется для определения, имеет ли он связь с заказом на продажу или WorkOrder, а TypeNo является ключом SalesOrder / WorkOrder .

Какой метод рекомендуется для поддержания этих отношений?

Читая документацию к доктрине, в ней упоминается класс репозитория, который я мог бы использовать для условной выборки на основе типа, поддерживая только одну сущность StockRequest.

Другая возможность - создать подкласс класса StockRequest, чтобы у меня было SalesOrderStockRequests и WorkOrderStockRequests .

1 Ответ

0 голосов
/ 21 марта 2012

Я бы сделал это с наследованием и отношением, например:

abstract class AbstractOrder {
 common fields
}

class SalesOrder extends AbstractOrder {

}

class WorkOrder extends AbstractOrder {

}

, затем

class StockRequest {
   relationship pointing to AbstractOrder
}

и когда вы получите getOrder () {return $ this-> order;} Doctrine может вернуть вам экземпляр SalesOrder или WorkOrder

...