doctrine2 dql, use setParameter with % wildcard when doing a like comparison

前端 未结 2 1308
刺人心
刺人心 2020-12-24 06:18

I want to use the parameter place holder - e.g. ?1 - with the % wild cards. that is, something like: \"u.name LIKE %?1%\" (though this throws an error). The docs have the fo

2条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-24 07:00

    When binding parameters to queries, DQL pretty much works exactly like PDO (which is what Doctrine2 uses under the hood).

    So when using the LIKE statement, PDO treats both the keyword and the % wildcards as a single token. You cannot add the wildcards next to the placeholder. You must append them to the string when you bind the params.

    $qb->expr()->like('u.nickname', '?2')
    $qb->getQuery()->setParameter(2, '%' . $value . '%');
    

    See this comment in the PHP manual. Hope that helps.

提交回复
热议问题