我正在编写一个使用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
答案 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()
希望它能帮到你!