Come associare sia una raccolta che una voce di questa collezione a un'entità

1

Sto lavorando a un progetto in cui ho un'entità, potremmo chiamare Users e un'altra entità Address .

Voglio definire l'entità User in modo che un utente abbia una raccolta di indirizzi (in genere una relazione One-To-Many), ma ho anche bisogno di un attributo dell'utente, lascia che sia main_address che avrebbe come target un singolo valore della raccolta precedente.

Vorrei sapere se esiste un modo convenzionale per farlo. L'unica soluzione che ho ora è di creare un'altra relazione One-to-One tra Users . main_address e Address ma questo non assicura che main_address faccia effettivamente parte della raccolta User . addresses .

Non so se potrebbe essere importante, perché è una domanda piuttosto teorica, ma sto usando Doctrine 2.

    
posta ibi0tux 26.10.2014 - 21:10
fonte

1 risposta

3

Aggiungi un campo main_address_id nell'entità o tabella User che contiene l'ID del record Indirizzo che è quello principale. Crea una relazione uno a uno, se preferisci.

The only solution I have now is to create another One-to-One relationship between Users.main_address and Address but this does not insure that the main_address will actually be part of the User.addresses collection.

Giusto. Hai bisogno di un altro meccanismo che lo assicuri. Puoi validarlo nella tua logica aziendale o utilizzare una stored procedure o trigger sull'RDBMS durante la creazione o la modifica di User che impone questa restrizione.

Doctrine potrebbe avere un modulo "regole aziendali" che puoi utilizzare. Il punto è che la restrizione aggiuntiva che stai imponendo su main_address_id non ha nulla a che fare con lo schema del tuo database, di per sé. È fondamentalmente una regola aziendale.

    
risposta data 26.10.2014 - 21:28
fonte

Leggi altre domande sui tag