回答

收藏

使用LIKE的教义2查询

技术问答 技术问答 359 人阅读 | 0 人回复 | 2023-09-14

我有以下查询代码:  P% O' ~& p! M" b+ V; C* ?
$repository = $em->getRepository('AcmeCrawlerBundle:Trainings');' E- F/ w# x9 {( _% S0 n
       $query = $repository->createQueryBuilder('p')
' L4 E5 m5 E3 ^) m' q) H# j7 L7 E               ->where('p.title LIKE :word')
: R5 A3 ], U4 E  }9 \$ `6 Z               ->orWhere('p.discription LIKE :word')$ T4 h* R5 u- H
               ->setParameter('word', $word)  ~( j* R9 L9 R- l! G
               ->getQuery();1 h. P  Q' {+ _% r4 `
$trainings = $query->getResult();  Y. e* R  f! y5 A3 ~2 g, j
问题是:即使存在匹配项,此查询也找不到它们。我使用此代码查看了完整的sql:
! n. i6 O% f0 l- G3 @" |( qprint_r(array(
. Y: w  }! n7 T3 k  ?+ D        'sql'        => $query->getSQL(),  B: V* U* b. }1 d* }
        'parameters' => $query->getParameters(),7 Z' ]2 ?1 Q3 S
        ));8 ^, k6 r: p0 u7 ?
而我得到的是:
& P7 z8 |3 M) l$ i/ Q$ RFROM Trainings t0_ WHERE t0_.title LIKE ? OR t0_.discription LIKE ? [parameters] => Array ( [word] => Spoken )
8 X2 f/ I& x) _8 h9 U(查询的最后一部分)请告诉我要更改什么?
$ e2 m$ N+ A- q. i0 b, s5 C                , @" e9 ~; `' Z" [; u( V
解决方案:
$ g  g9 [' V2 J* ~                5 r# V/ u$ d* d+ Q8 j3 p

+ m0 J3 l6 i: p, [" o4 J6 C9 |3 t: X% q( c5 M( n7 e
                您忘记%了单词周围的迹象:
& N9 L3 `6 ^8 Z( K->setParameter('word', '%'.$word.'%')
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则