【问题标题】:Doctrine query builder throws an error教义查询生成器引发错误
【发布时间】:2015-03-12 11:56:25
【问题描述】:

我正在尝试编写一个简单的查询,然后 var 转储结果。但是我收到了这个错误:

[语义错误] 第 0 行,第 15 列,靠近“管理员 WHERE 名称”:错误: 未定义“Admin”类。

这是我的方法:

public function processLogin()
{
    $name     = $this->request->request->get('username');
    $password = $this->request->request->get('password');

    $em    = $this->getDoctrine()->getManager();
    $query = $em->createQuery('SELECT id FROM Admin WHERE name = :name AND password = :password')
                ->setParameter('name', $name)
                ->setParameter('password', $password);

    $result = $query->getResult();
    var_dump($result);
}

错误可能在哪里?

【问题讨论】:

  • 您是否在use YourBundle\Entity\Admin 中包含了实体类Admin?另外,这个方法在哪里?
  • 你试过FROM YourBundle:Admin WHERE吗?
  • 是的,这有帮助。我还在几个地方添加了别名。 SELECT u.id FROM AppBundle:Admin u WHERE u.name = :name AND u.password = :password 。为什么我需要这些别名 .u?它有什么用?

标签: symfony doctrine


【解决方案1】:

如下重写您的查询

$query = $em->createQuery(
    'SELECT u.id 
     FROM YourBundle:Admin u
     WHERE u.name = :name 
       AND 
           u.password = :password
     ')
     ->setParameter('name', $name)
     ->setParameter('password', $password);

别名部分与查询生成器有关。我认为如果您使用实体管理器,您不必做太多工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多