In primo luogo, una nota di partenza: per convenzione la classe Entity dovrebbe essere probabilmente singolare. Quindi, Impostazione, non Impostazioni. Si potrebbe sostenere che le "impostazioni" come gruppo di impostazioni correlate potrebbero essere viste come un'unica entità. Ancora, qualcosa da tenere a mente.
In Doctrine2, si utilizzerà un repository per creare questo tipo di query. Nel tuo codice in cui avevi intenzione di chiamare Settings::getParam
, dovresti invece recuperare il repository e interrogarlo. In Symfony2, dicono:
// $em is your entitymanager, as you were going to pass to your method above
// $key is the key you were going to pass to your method above
$repository = $em->getRepository('\FrontendBundle\Settings');
$setting = $repository->getByParam($key);
Per impostazione predefinita, senza scrivere codice, depositi definiscono getByXXXX per ogni campo nella vostra entità.
Se si desidera eseguire una query più complessa, è possibile estendere il repository.
use Doctrine\ORM\EntityRepository;
class SettingsRepository extends EntityRepository
{
public function getBySomeComplicatedQuery() {
$sort_order = $this->getEntityManager()
->createQuery('SELECT count(s) FROM FrontendBundle\Settings s WHERE s.value > 32')
->getResult(Query::HYDRATE_SINGLE_SCALAR);
}
}
E quindi si chiama quel metodo allo stesso modo.
Altri sostengono l'uso di un oggetto Manager che non sarebbe quindi legato all'Entità/ORM, ma questa è una complicazione inutile in questo caso, penso.
Doctrine2 è specificamente progettato per non consentire l'utilizzo di query nel file Entity; Entità ed EntityManager sono in realtà due aspetti del livello standard del modello, divisi per applicare le migliori pratiche. Vedi questo articolo: http://symfony2basics.jkw.co.nz/get-symfony2-working/entities/
fonte
2011-05-27 06:17:29
Ciao, l'ultimo collegamento è andato. – userfuser