创建自定义存储库原则

Create Custom Repository Doctrine

我需要创建一个存储库以便在 table 中找到指定的记录(名称)。

class CategoryRepository extends \Doctrine\ORM\EntityRepository
{
    public function getAllByName($name)
    {
        return  $this->getEntityManager()->createQuery('SELECT * FROM AppBundle\Entity\Category WHERE name LIKE "$name"');
    }
}

我这样做了,但不幸的是,它不起作用。请告诉我,我该怎么做? MySQL 查询需要这样:

SELECT * FROM category WHERE name LIKE 'Your_Name'

您可能错过了对查询对象的 getResult() 方法的调用,例如:

/**
 * @return Category[]
 */
 public function getAllByName($name)
{
    return  $this->getEntityManager()->createQuery('SELECT * FROM AppBundle\Entity\Category WHERE name LIKE "$name"')->getResult();
}

一些信息here in the doc

希望对您有所帮助

工作方式:

$result = $this->getDoctrine()->getRepository('AppBundle:Category')->findBy(array('name' => '$name'));

你必须使用 doctrine query builder。 在您的方法 getAllByName() 中添加以下代码:

$qb = $this->createQueryBuilder('c');

return $qb
        ->andWhere(
            $qb->expr()->like('c.name', ':search'),
        )
        ->setParameter('search', "%$search%")
        ->getQuery()
        ->getResult();

通过这种方法,您可以使用 LIKE