我需要创建一个存储库才能在表中查找指定的记录(名称)。
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'));