Sto riscontrando un problema di progettazione nel mio progetto, relativo a dove mettere una logica aziendale.Symfony2: l'approccio migliore per utilizzare la logica business (repository) nell'entità o controller
Ho tre entità, Evento, TicketOrder e Ticket. Un evento ha un sacco di TicketOrders e un TicketOrder ha molti biglietti.
Nel mio modello, devo mostrare quanti biglietti ha un evento. Ho pensato all'approccio migliore per raggiungere questo obiettivo e non ho trovato una buona soluzione. Ho provato questo:
1) Creare un ticket ticket 'membro privato nell'entità Event, con metodo setTicketsCount e getTicketsCount. Creare un metodo 'loadTicketsCount' con LifeCycleCallback 'PostLoad', per accedere al metodo TicketRepository 'findByEvent'. Questo era impossibile perché non posso accedere al repository in una classe di entità.
2) Nell'azione che verrà utilizzata per visualizzare l'evento, posso accedere all'archivio dei ticket e impostare manualmente la proprietà 'ticketCount' dell'evento. Non so se è un buon approccio perché se la mia azione è elencare un sacco di eventi dovrò effettuare il ciclo su tutti gli eventi e fare una chiamata al repository per ciascuno di questi.
Io davvero non conosco l'approccio migliore per raggiungere questo obiettivo e apprezzerò davvero se qualcuno mi può aiutare.
Grazie! ;)
Vuoi il numero di biglietti totali? {{event.tickets | length}} restituisce il numero totale di ticket associati a determinati eventi. –
Grazie per la tua risposta, artworkad. l'oggetto evento non ha membri 'ticket', i ticket beacause sono correlati ai ticketorders e 'ticketorders' è correlato a 'evento'. Inoltre, non voglio usare il metodo di lunghezza ramoscello perché penso che sia inefficiente. Penso che sia meglio fare una query COUNT in repository o qualcosa del genere. Ho ragione io? –