Nelle versioni precedenti di Symfony eravate in grado di creare nuovi oggetti all'interno di un oggetto dati estendendo una classe modello con una sottoclasse estesa.Come estendere un'entità in Symfony2 come in passato era possibile usare in Symfony 1?
Ad esempio, avevo un modello di questionario con una tabella dei risultati. Quella tabella dei risultati aveva una classe modello Result.php che usava impostare e ottenere i risultati attraverso Doctrine. Ho quindi utilizzato la sottoclasse del modello ResultPeer.php per aggiungere una nuova funzione all'oggetto Risultato che ha ottenuto il risultato e in base a un set fisso di soglie calcolato un punteggio e il colore corrispondente.
Nella nuova versione di Symfony2 con Doctrine2 sto lottando per trovare il modo migliore per farlo. Durante la creazione di un'entità, nella documentazione è possibile trovare solo la possibilità di aggiungere oggetti in base alle relazioni della struttura dati.
Ho esaminato i repository di entità, ma ciò non sembra estendere o aggiungere funzionalità a un oggetto originale. Sembra riportare gli oggetti dati in base a query più complesse rispetto alle funzioni di query standard.
Ho anche guardato i servizi, che posso utilizzare per raccogliere l'oggetto e quindi usando l'oggetto creare un nuovo array che include questo oggetto e i dati appena creati, ma questo non sembra giusto o seguire la filosofia di Symfony È tutto basato su.
Qualcuno sa come le funzioni possono essere aggiunte a un oggetto dati esistente. L'ho trovato davvero utile nella versione precedente di Symfony, ma non riesco a trovare l'alternativa nella nuova versione di Symfony2.
Questo è brillante. Sapevo che doveva essere possibile. Grazie Matt. –
Supponiamo, ho 'BaseAuditableEntity.php' avere la colonna' lastName' con nullable = false, quindi su estendere la classe a 'User.php'. Ho bisogno di cambiare il cognome coulumn precedente accettare valori nulli (nullable = true). Ti prego, aiutami, come si fa? –
Nella tua classe 'User.php', prova a ridefinire la proprietà' lastName' e l'annotazione ad essa associata.Forse questo sostituirà ciò che era stato precedentemente impostato nell'entità di base. Se non funziona, temo di non poter aiutare ulteriormente. Prova a chiedere sulla mailing list doctrine2. Se trovi una soluzione, non esitare a segnalarla qui. – Matt