Коллекция материалов и статей для веб разработчиков


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 и т д, все что душе угодно...

Tags: 

Комментарии

очень выручил

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA