Ho una domanda sulle migliori pratiche in Symfony 2. Scusa se è un po 'vago e soggettivo. Immagino di poter riassumere la mia domanda come:Migliori pratiche di symfony. Le query dovrebbero essere in repository o servizi?
"I repository sono sempre il posto giusto per le domande?".
In questo momento sto inserendo la maggior parte delle mie query di dottrine nei repository di entità. La maggior parte delle azioni del mio controller fanno cose tipiche come la query per un'entità o una raccolta di entità, lanciare un'eccezione o un reindirizzamento a seconda del risultato, altrimenti aggiorna una o più entità. La maggior parte delle azioni è più complessa di quanto possa essere fatto in modo efficiente con le query standard -> find, -> findBy etc. La maggior parte richiede join. Quando una query coinvolge più entità, a volte non sono sicuro di quale repository debba entrare. Suppongo che ci sia l'entità root della query ma ... a volte i dati delle entità unite sono più importanti e rilevanti, quindi è sbagliato per inserirlo nel repository dell'entità root.
Funziona bene, ma io tendo a finire con un sacco di domande quasi uguali ma leggermente diverse nei miei repository. Venire con i nomi e tenere traccia esattamente di ciò che ognuno fa può diventare confuso e noioso. La maggior parte di queste query viene utilizzata da solo uno o due azioni del controller (spesso utilizzate raramente) nello stesso controller. Mi sento come se stessi ingombrando i miei repository con roba troppo specializzata e raramente usata.
Sembra che solo le azioni più semplici debbano essere incapsulate in un oggetto o servizio. Quindi, ho iniziato a svolgere molte delle mie query direttamente nel servizio piuttosto che in un repository. È facile guardare l'azione in un unico punto. È una pratica corretta?
il controller dovrebbe essere uno strato molto sottile tra il mondo delle applicazioni e il mondo http e consiglio sempre di mettere le query nei repository. –