Symfony 2 Получить доступ к Entity Manager из static (статического) метода
Для получения доступа к Entity Manager из статического (static) метода, что позводин нам использовать произвольный sql запрос. На самом деле все довольно просто, необходимо в любой из Бандлов (Bundle) добавить следующие методы:
class AcmeDemoBundle extends Bundle { private static $containerInstance = null; public function setContainer(\Symfony\Component\DependencyInjection\ContainerInterface $container = null) { parent::setContainer($container); self::$containerInstance = $container; } public static function getContainer() { return self::$containerInstance; } }
и затем в нужном нам методе, использовать например такой код:
static function getData($id) { //Получаем объект EntityManager $em = WyngspanBundle::getContainer()->get('doctrine')->getManager(); /** @var $em EntityManager */ //используем например в получении данных о пользователе $user = $em->getRepository('Users')->find($id); //или чистый sql запрос $where = ' WHERE id= '.$id $sql = ' SELECT id, name FROM users' . $where; $query = $em->getConnection()->query($sql); $user= $query->fetchAll();; return $user; }
Также можно использовать QueryBuldier, DQL и т д, все что душе угодно...
Комментарии
Спасибо!
очень выручил
Добавить комментарий