Po pierwsze, informacja początkowa: zgodnie z konwencją klasa jednostek powinna być prawdopodobnie liczbą pojedynczą. A więc ustawienie, a nie ustawienia. Można argumentować, że "ustawienia" jako grupa powiązanych ustawień mogą być postrzegane jako jedna całość. Wciąż jednak coś na uwadze.
W Doctrine2 użyłbyś repozytorium do utworzenia tego typu zapytania. W kodzie, w którym chcesz zadzwonić pod numer Settings::getParam
, zamiast tego pobierzesz repozytorium i zapytasz o to. W Symfony2, powiedzieć:
// $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);
Domyślnie, bez konieczności pisania kodu, repozytoria określić getByXXXX dla każdego pola w swojej jednostce.
Jeśli masz bardziej skomplikowane zapytanie, możesz rozszerzyć repozytorium.
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);
}
}
A potem nazwałbyś tę metodę w ten sam sposób.
Inni byliby zwolennikami użycia obiektu Manager, który nie byłby wtedy związany z Entity/ORM, ale jest to niepotrzebne komplikowanie w tym przypadku.
Doctrine2 został zaprojektowany tak, aby nie pozwalał używać zapytań w pliku Entity; Jednostki i EntityManagers to w rzeczywistości dwa aspekty standardowej warstwy modelu, podzielone w celu wymuszenia najlepszych praktyk. Zobacz ten artykuł: http://symfony2basics.jkw.co.nz/get-symfony2-working/entities/
Witam, ostatni link zniknął. – userfuser