Doctrine orm 我想从zend 2中访问doctrine 2 DBAL以进行本机sql查询

Doctrine orm 我想从zend 2中访问doctrine 2 DBAL以进行本机sql查询,doctrine-orm,zend-framework2,Doctrine Orm,Zend Framework2,我在我的网站上使用zend 2作为信条2。但是,我想进行一个本机sql查询,因此需要一个mysql连接 我理解条令2通过DBAL给出了这一点 我指的是马克·罗宾逊 条令2 ORM使用条令2 DBAL,这是一种精简但有用的方法 包装PDO数据库层。您可以从 服务容器(称为“数据库连接”),并将其 无论您想要什么样的SQL,大小写和所有内容。例如,在控制器中 : 我可以通过访问我的实体经理 public function getEntityManager() {

我在我的网站上使用zend 2作为信条2。但是,我想进行一个本机sql查询,因此需要一个mysql连接

我理解条令2通过DBAL给出了这一点

我指的是马克·罗宾逊

条令2 ORM使用条令2 DBAL,这是一种精简但有用的方法 包装PDO数据库层。您可以从 服务容器(称为“数据库连接”),并将其 无论您想要什么样的SQL,大小写和所有内容。例如,在控制器中

:

我可以通过访问我的实体经理

public function getEntityManager()
        {
            if (null === $this->em) {
                $this->em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
            }
            return $this->em;
        }

您可以使用
EntityManager
ResultMapping
实例运行本机查询,如下所示:

use Doctrine\ORM\Query\ResultSetMapping;

$rsm = new ResultSetMapping();

$entityManager = $htis->getEntityManager();
$query = $entityManager->createNativeQuery(
    'SELECT id, name, discr FROM users WHERE name = ?', $rsm
);
$query->setParameter(1, 'romanb');

$users = $query->getResult();
这是


但您也可以使用更多的本机解决方案,如或。您可以使用
EntityManager
ResultMapping
实例运行本机查询,如下所示:

use Doctrine\ORM\Query\ResultSetMapping;

$rsm = new ResultSetMapping();

$entityManager = $htis->getEntityManager();
$query = $entityManager->createNativeQuery(
    'SELECT id, name, discr FROM users WHERE name = ?', $rsm
);
$query->setParameter(1, 'romanb');

$users = $query->getResult();
这是


但您也可以使用更多的本机解决方案,如或。您可以使用
EntityManager
ResultMapping
实例运行本机查询,如下所示:

use Doctrine\ORM\Query\ResultSetMapping;

$rsm = new ResultSetMapping();

$entityManager = $htis->getEntityManager();
$query = $entityManager->createNativeQuery(
    'SELECT id, name, discr FROM users WHERE name = ?', $rsm
);
$query->setParameter(1, 'romanb');

$users = $query->getResult();
这是


但您也可以使用更多的本机解决方案,如或。您可以使用
EntityManager
ResultMapping
实例运行本机查询,如下所示:

use Doctrine\ORM\Query\ResultSetMapping;

$rsm = new ResultSetMapping();

$entityManager = $htis->getEntityManager();
$query = $entityManager->createNativeQuery(
    'SELECT id, name, discr FROM users WHERE name = ?', $rsm
);
$query->setParameter(1, 'romanb');

$users = $query->getResult();
这是


但您也可以使用更多的本机解决方案,如或

但不确定问题的真正含义。您可以使用与获取实体管理器相同的方法。只需更改服务id:

public function getConnection() {
  if (null === $this->conn) {
    $this->conn = $this->getServiceLocator()->get('database_connection');
  }
  return $this->conn;
}
顺便说一下,使用局部变量缓存结果可能是浪费代码。需要时,只需从服务定位器中提取它

或者,如果您已经有实体管理器,则可以使用一个简单的:

$connection = $entityManager->getConnection();
可能需要了解一下dbal连接对象的实际内容以及如何使用它


不确定问题的真正含义。您可以使用与获取实体管理器相同的方法。只需更改服务id:

public function getConnection() {
  if (null === $this->conn) {
    $this->conn = $this->getServiceLocator()->get('database_connection');
  }
  return $this->conn;
}
顺便说一下,使用局部变量缓存结果可能是浪费代码。需要时,只需从服务定位器中提取它

或者,如果您已经有实体管理器,则可以使用一个简单的:

$connection = $entityManager->getConnection();
可能需要了解一下dbal连接对象的实际内容以及如何使用它


不确定问题的真正含义。您可以使用与获取实体管理器相同的方法。只需更改服务id:

public function getConnection() {
  if (null === $this->conn) {
    $this->conn = $this->getServiceLocator()->get('database_connection');
  }
  return $this->conn;
}
顺便说一下,使用局部变量缓存结果可能是浪费代码。需要时,只需从服务定位器中提取它

或者,如果您已经有实体管理器,则可以使用一个简单的:

$connection = $entityManager->getConnection();
可能需要了解一下dbal连接对象的实际内容以及如何使用它


不确定问题的真正含义。您可以使用与获取实体管理器相同的方法。只需更改服务id:

public function getConnection() {
  if (null === $this->conn) {
    $this->conn = $this->getServiceLocator()->get('database_connection');
  }
  return $this->conn;
}
顺便说一下,使用局部变量缓存结果可能是浪费代码。需要时,只需从服务定位器中提取它

或者,如果您已经有实体管理器,则可以使用一个简单的:

$connection = $entityManager->getConnection();
可能需要了解一下dbal连接对象的实际内容以及如何使用它