如何从控制器中的存储库中找到记录?它只能通过id搜索,但我想通过电子邮件或任何我想要的东西进行搜索?
$em = $this->getDoctrine()->getRepository('HomeBundle:user')->find($email);
答案 0 :(得分:2)
为什么不使用findOneBy?
$user = $this->getDoctrine()
->getRepository('HomeBundle:user')
->findBy(array('email' => $email));
答案 1 :(得分:2)
您需要使用findOneBy(array)
通过电子邮件找到单个记录
$em = $this->getDoctrine()->getRepository('HomeBundle:user')
->findOneBy(array('email' = >$email));
答案 2 :(得分:1)
对于简单查询(基本上为WHERE column = value
),您可以使用findBy
或findOneBy
。
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('HomeBundle:user')
->findOneBy(array("email"=>$email),array());
$entities = $em->getRepository('HomeBundle:user')
->findBy(array("email"=>$email), array());
如果您需要更复杂的内容(例如>=
或加入),可以使用query builder或dql。
但是你应该创建一个Custom Repository并将你的查询放在那里以使它们可以重复使用并保持控制器的纤薄。
这涉及以下四个步骤:
EntityRepository
findOneBy