创建自定义存储库原则



我需要创建一个存储库才能在表中查找指定的记录(名称)。

class CategoryRepository extends DoctrineORMEntityRepository
{
public function getAllByName($name)
{
return  $this->getEntityManager()->createQuery('SELECT * FROM AppBundleEntityCategory WHERE name LIKE "$name"');
}
}

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

SELECT * FROM category WHERE name LIKE 'Your_Name'

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

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

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

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

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

文档中的一些信息

希望这个帮助

工作方法:

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

相关内容

  • 没有找到相关文章