使用Symfony2中的nativeQuery检索对象
我想用Symfony 2中的本机查询检索一个对象 我的代码是:使用Symfony2中的nativeQuery检索对象,symfony,doctrine-orm,Symfony,Doctrine Orm,我想用Symfony 2中的本机查询检索一个对象 我的代码是: $rsm = new ResultSetMapping($this->getEntityManager()); $rsm->addEntityResult('SNUserBundle:User', 'u'); $rsm->addFieldResult('u', 'nickname', 'nickname'); $query = $this->getEntity
$rsm = new ResultSetMapping($this->getEntityManager());
$rsm->addEntityResult('SNUserBundle:User', 'u');
$rsm->addFieldResult('u', 'nickname', 'nickname');
$query = $this->getEntityManager()->createNativeQuery('SELECT u.nickname FROM u WHERE u.nickname = ?', $rsm);
$query->setParameter(1, 'barno7');
$users = $query->getResult();
我有这个错误
An exception occurred while executing 'SELECT u.nickname FROM u WHERE u.nickname = ?' with params ["barno7"]:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sn.u' doesn't exist
我的表名SNU user和我的实体SNUserBundle:user中有此注释
* @ORM\Table(name="sn_user")
我也试着
$query = $this->getEntityManager()->createNativeQuery('SELECT u.nickname FROM user WHERE u.nickname = ?', $rsm);
我的错误是
An exception occurred while executing 'SELECT u.nickname FROM users WHERE u.nickname = ?' with params ["barno7"]:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sn.user' doesn't exist
我真正的表是sn_user我想你把SQL和DQL或者使用它们的函数混为一谈了。看起来您希望使用DQL进行查询,这将返回一个对象。在这种情况下,不使用
createNativeQuery
方法。此方法适用于SQL
有关如何使用DQL进行查询的示例,请参见。以下是文档中的示例片段:
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT p
FROM AcmeStoreBundle:Product p
WHERE p.price > :price
ORDER BY p.price ASC'
)->setParameter('price', '19.99');
$products = $query->getResult();
按照这个语法,你应该会没事的。我这样解决
$rsm = new ResultSetMapping;
$rsm->addEntityResult('SNUserBundle:User', 'u');
$rsm->addFieldResult('u', 'id', 'id');
$rsm->addFieldResult('u', 'n', 'nickname');
$query = $this->getEntityManager()->createNativeQuery('
SELECT u.id ,u.nickname as n FROM sn_user u WHERE u.nickname LIKE = ?', $rsm);
$query->setParameter(1, 'barno7');
$users = $query->execute();
return $users;
查询是否应该类似于
SELECT u.nickname FROM sn\u user u,其中u.nickname=?
您需要正确地为表添加别名。我不知道这是否是主要问题,但这似乎是其中之一。@keyboardSmasher不,但谢谢,我忘了