Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Symfony 如何在DQL中使用LIKE子句?_Symfony_Dql - Fatal编程技术网

Symfony 如何在DQL中使用LIKE子句?

Symfony 如何在DQL中使用LIKE子句?,symfony,dql,Symfony,Dql,我正在尝试使用条令查询语言中的LIKE子句创建一个查询 我的问题如下: public function findByName($keyword){ $em = $this->getEntityManager(); $consulta = $em->createQuery('SELECT o FROM AppBundle:Items o WHERE o.name LIKE :keyword'); $consulta->setParameter('keywo

我正在尝试使用条令查询语言中的LIKE子句创建一个查询

我的问题如下:

public function findByName($keyword){
    $em = $this->getEntityManager();
    $consulta = $em->createQuery('SELECT o FROM AppBundle:Items o WHERE o.name LIKE :keyword');
    $consulta->setParameter('keyword', '%'.$keyword.'%');
    return $consulta->getResult();
}
我将得到下一个错误:

Notice: Trying to access array offset on value of type null
如果我执行相同的查询,而不是简单地使用=,则查询将正确执行,并得到结果。我在这里做错了什么

谢谢你的帮助

调试信息:

objectDoctrine\ORM\Query901 24{ [\u state:Doctrine\ORM\Query:private]=>int2 [\u解析类型:条令\ORM\Query:private]=>array0{} [\u dql:Doctrine\ORM\Query:private]=>string57从中选择o AppBundle:Coche o其中o.modelo=:关键字 [\u parserResult:Doctrine\ORM\Query:private]=>NULL [\u firstResult:Doctrine\ORM\Query:private]=>NULL [\u maxResults:Doctrine\ORM\Query:private]=>NULL [\u queryCache:Doctrine\ORM\Query:private]=>NULL [\u expireQueryCache:Doctrine\ORM\Query:private]=>boolfalse [\u queryCacheTTL:Doctrine\ORM\Query:private]=>NULL [\u useQueryCache:Doctrine\ORM\Query:private]=>booltrue [参数:受保护]=> objectDoctrine\Common\Collections\ArrayCollection946 1{ [元素:条令\Common\Collections\ArrayCollection:private]=> array1{[0]=>ObjectDoctrin\ORM\Query\Parameter913{ [名称:条令\ORM\Query\Parameter:private]=>string7关键字 [值:条令\ORM\Query\Parameter:private]=>int1 [类型:条令\ORM\Query\Parameter:private]=>string7整数 }}}[\u resultsetmap:protected]=>NULL[\u em:protected]=> objectDoctrine\ORM\EntityManager 740 11{ [配置:条令\ORM\EntityManager:private]=> objectDoctrine\ORM\Configuration564 1{ [\u属性:受保护]=>array14{[entityNamespaces]=> array1{[AppBundle]=>string16 AppBundle\Entity} [metadataCacheImpl]=>objectDoctrine\Common\Cache\ArrayCache566 6{[data:Doctrine\Common\Cache\ArrayCache:private]=>array0{ }[hitsCount:Doctrine\Common\Cache\ArrayCache:private]=>int0 [misseScont:Doctrine\Common\Cache\ArrayCache:private]=>int0 [正常运行时间:条令\Common\Cache\ArrayCache:private]=> int1598445780 [名称空间:条令\Common\Cache\CacheProvider:private]=> string79 sf形式默认值061d80f6e71229c042b639f23634872f7045193d957ba060c640bf0458feeae2 [名称空间版本:条令\Common\Cache\CacheProvider:private]=> NULL}[queryCacheImpl]=>


您好,我已经尝试过了,但它不起作用,我的实体有一个存储库,其中有这个查找方法。我必须直接在控制器中创建查询吗?我在存储库中尝试了查询生成器方法,但它对我不起作用。谢谢您的帮助。我得到一个错误,即不存在getQuery方法。使用getDQL,我也得到了同样的结果我在创建查询时使用的DQL。我将继续调查可能导致问题的原因,如果我找到一个答案,并发布它是否对将来的人有帮助。感谢大家的耐心!您好,我刚刚发现,更改了一行条令代码,我能够使用like子句获得结果,我不知道为什么或如何获得结果d我的条令代码中有任何错误,但如果它对任何人都有帮助,那就是错误。谢谢大家的帮助!在op.@xypher中添加了解决方案。要回答您自己的问题,您应该使用答案部分。谢谢!
    public function LikeExpression()
    {
        $stringExpr = $this->StringExpression();
        $not = false;
        if ($this->lexer->isNextToken(Lexer::T_NOT)) {
            $this->match(Lexer::T_NOT);
            $not = true;
        }
        $this->match(Lexer::T_LIKE);
        if ($this->lexer->isNextToken(Lexer::T_INPUT_PARAMETER)) {
            $this->match(Lexer::T_INPUT_PARAMETER);
            $stringPattern = new AST\InputParameter($this->lexer->token['value']);
        } else {
            $stringPattern = $this->StringPrimary();
        }
        $escapeChar = null;

//////// Highlighted error area//////////
        if ($this->lexer->lookahead['type'] === Lexer::T_ESCAPE) {
            $this->match(Lexer::T_ESCAPE);
            $this->match(Lexer::T_STRING);
            $escapeChar = new AST\Literal(AST\Literal::STRING, $this->lexer->token['value']);
        }
////////////////////////////////////////



        $likeExpr = new AST\LikeExpression($stringExpr, $stringPattern, $escapeChar);
        $likeExpr->not = $not;
        return $likeExpr;
    }