创建自定义存储库原则

时间:2018-02-21 18:01:54

标签: php mysql symfony doctrine-orm symfony-3.4

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

project s,... (S)

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

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

3 个答案:

答案 0 :(得分:1)

可能你错过了查询对象上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

希望这个帮助

答案 1 :(得分:1)

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

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

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

使用此方法,您可以使用LIKE

答案 2 :(得分:0)

工作方法:

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