Symfony3 doctrine orm find method

时间:2016-07-29 15:38:56

标签: php doctrine-orm symfony

我正在编写一个使用Doctrine ORM的Symfony3。

所以我想要做的是查找表中是否存在给定的电子邮件地址(每封电子邮件都是唯一的)。所以我有一个带有一些属性的用户存储库,我可以轻松地将数据保存到数据库,但无法检索数据。

/**
 * @param $email
 */
public function findUserByEmail($email)
{
    $user = $this->getDoctrine()
        ->getRepository('TestBundle:TestUser')
        ->find($email);

    if (!$user) {
        echo 'Error';die();
    }
}

我知道传递给函数的var包含一个电子邮件字符串,但我得到的回报是错误,当我在if if statment之前获得null时var_dump $ user。

我关注了Symfony docs

2 个答案:

答案 0 :(得分:2)

您的User可能有一个单独的主键字段。 repo上的find()方法仅通过主键检索。

Repositories use __call to dynamically process findBy* and findOneBy* methods,所以你可以这样称呼它:

$repo = $this->getDoctrine()->getRepository('TestBundle:TestUser');

// magic find method
$user = $repo->findOneByEmail($email);

// explicit find method
$user = $repo->findOneBy(['email' => $email]);

// custom QueryBuilder
$user = $repo->createQueryBuilder('user')
    ->where('user.email = :email')
    ->setParameter('email', $email)
    ->getQuery()
    ->getSingleResult();

顺便说一句:如果您要对提交的表单进行验证,则会有一个约束为您执行此检查:UniqueEntity

答案 1 :(得分:0)

我认为问题是因为您忘记拨打-debug

所以代码是:

getManager()

希望它能帮到你!