回答

收藏

使用LIKE的教义2查询

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

我有以下查询代码:* D. q2 {8 B& ~, B
$repository = $em->getRepository('AcmeCrawlerBundle:Trainings');# _3 o$ Z1 X" r. ]
       $query = $repository->createQueryBuilder('p')( D% ]! m2 C. S5 a
               ->where('p.title LIKE :word')" S  ~* `+ B5 B1 g3 K. Q% ^
               ->orWhere('p.discription LIKE :word'). z1 `' }2 r4 ~8 D+ j$ F$ _0 h
               ->setParameter('word', $word)
# E0 Q3 {7 C8 ?! h               ->getQuery();7 g: ^3 X* y) ]' p% {. t3 a- ]3 t6 r
$trainings = $query->getResult();
# A3 I* w# \) J* C( m/ d问题是:即使存在匹配项,此查询也找不到它们。我使用此代码查看了完整的sql:
7 \' l9 a+ ~8 r  v. @print_r(array(
3 a% I! G1 k% U  a        'sql'        => $query->getSQL(),- c9 Y6 N* o4 C" S, q$ e
        'parameters' => $query->getParameters(),. t( O* ^9 t; }8 }% q
        ));
8 ?6 t$ I$ n" n6 z而我得到的是:
( _, i% Y) b2 A% U$ t$ P  f3 rFROM Trainings t0_ WHERE t0_.title LIKE ? OR t0_.discription LIKE ? [parameters] => Array ( [word] => Spoken )
5 u  H6 q0 A9 Q1 t  \(查询的最后一部分)请告诉我要更改什么?0 L, A& k% K2 U' P+ ?
               
1 \' d) k6 ~5 I0 J. v5 `解决方案:
' Q) \) G/ q+ B                - S6 W5 w* R( @

  |" h3 d' m) P; x1 O# C9 {/ Y- O1 r" v2 {0 c' z0 V) W9 x
                您忘记%了单词周围的迹象:
. G' _; \) j* t" Q->setParameter('word', '%'.$word.'%')
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则