Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建自定义存储库原则_Php_Mysql_Symfony_Doctrine Orm_Symfony 3.4 - Fatal编程技术网

Php 创建自定义存储库原则

Php 创建自定义存储库原则,php,mysql,symfony,doctrine-orm,symfony-3.4,Php,Mysql,Symfony,Doctrine Orm,Symfony 3.4,我需要创建一个存储库,以便在表中找到指定的记录(名称) class CategoryRepository extends \Doctrine\ORM\EntityRepository { public function getAllByName($name) { return $this->getEntityManager()->createQuery('SELECT * FROM AppBundle\Entity\Category WHERE na

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

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();
}
一些信息

希望这有助于

工作方法:

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

您必须使用
条令查询生成器
。 在方法
getAllByName()
中添加以下代码:

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

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

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

在该查询中
LIKE
没有任何意义。只需使用
=
。但是如果您使用
=
,您可以只使用
$entities=$repo->findByName($name)
此外,FROM中的
应该是实体类,而不是存储库。您可能在
$name
值周围也缺少引号,但您还是应该使用参数,而不是将值连接到查询中。@JonStirling,类似这样的情况吗<代码>返回$this->getEntityManager()->createQuery('SELECT*FROM AppBundle\Entity\Category WHERE name=“$name”)某种程度上,除了仍然没有使用参数。我的建议是不要用你自己的方法。如果您当前正在调用
getAllByName
,只需调用
findByName($name)
,它由条令的EntityRepository处理。@JonStirling写道:在存储库中找不到方法'findByName($name)'。。。