创建自定义存储库原则
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
。
我需要创建一个存储库以便在 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
。