Symfony3 Doctrine querybuilder

时间:2016-08-01 11:32:08

标签: php doctrine symfony

我正在使用Doctrine ORM编写Symfony3应用程序。

我有一个拥有所有属性及其制定者和吸气剂的实体。

尝试构建,以便我可以根据电子邮件地址检索行。

my query:

      /**
     * @param $email
     */
    public function getUserByEmail($email)
{
    $repository = $this->db->EntityManagerORM()
        ->getRepository('TestBundle:User');

    $query = $repository->createQueryBuilder('t')
        ->where('t.emial = :email')
        ->setParameter(':email', $email)
        ->getQuery();

    $test = $query->getResult();

    var_dump($test);
  1. $ this-> db是一个EntityManager,它是一个服务并在我的__construct中实例化。所以我做的是检索实体,他们创建一个queryBuilder,我想在那里检索一行电子邮件==给定的电子邮件。

    我得到了回应:

    "Notice: Undefined index: [Semantical Error] line 0, col 63 near 'emial
    

    =:ema':错误:类Test \ TestBundle \ Entity \ User没有字段或

    名为emial的协会"

  2. 我的代码中有任何可疑的内容......?

2 个答案:

答案 0 :(得分:1)

setParameter 函数中不需要:

您的代码中的另一个问题是,User表没有名为emial的列。仔细检查并用适当的名称替换它。

所以你的查询看起来像这样,

$query = $repository->createQueryBuilder('t')
        ->where('t.RIGHT_COLUMN_NAME = :email')
        ->setParameter('email', $email)
        ->getQuery();

在上面的代码中,使用正确的列名替换RIGHT_COLUMN_NAME

答案 1 :(得分:1)

这是电子邮件的拼写。改为:

$query = $repository->createQueryBuilder('t')
      ->where('t.email = :email')
      ->setParameter(':email', $email)
      ->getQuery();

这应该解决问题。