如何在symfony2中从存储库中查找记录



如何从控制器的存储库中找到记录?它只按 id 搜索,但我想通过电子邮件或任何我想要的东西搜索?

$em = $this->getDoctrine()->getRepository('HomeBundle:user')->find($email);

为什么不使用findOneBy ?

$user = $this->getDoctrine()
->getRepository('HomeBundle:user')
->findBy(array('email' => $email));
您需要

使用findOneBy(array)通过电子邮件查找单个记录

$em = $this->getDoctrine()->getRepository('HomeBundle:user')
    ->findOneBy(array('email' = >$email));

对于简单的查询(基本上是WHERE column = value),可以使用findByfindOneBy

$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('HomeBundle:user')
             ->findOneBy(array("email"=>$email),array());
$entities = $em->getRepository('HomeBundle:user')
               ->findBy(array("email"=>$email), array());

如果需要更复杂的(如>=或联接),可以使用查询生成器或 dql。

但是您应该创建一个自定义存储库并将您的查询放在那里,以使它们可重用并保持您的控制器苗条。

这涉及以下四个步骤:

  • 在 HomeBundle/Entity 中创建一个具有命名空间的用户存储库类 扩展EntityRepository
  • 在实体配置中链接存储库(注释、yaml 或 xml)
  • 使用 dql 或查询生成器编写存储库函数。
  • 调用存储库函数而不是findOneBy

相关内容

  • 没有找到相关文章

最新更新