【发布时间】:2014-05-20 11:01:24
【问题描述】:
我正在尝试使用 LIKE 在我的数据库中搜索,现在构建器运行良好,除了 1 件事:
我想在每个参数的前面和后面都有一个%,但是构建器的工作方式是在执行时在每个参数的前面和后面放置一个'。所以我不能手动添加它们
有没有办法做到这一点?
这是查询:
$queryBuilder = $this->db->createQueryBuilder();
$queryBuilder
->select('t.id', 't.status', 't.title', 't.price', 'u.username')
->from('tools', 't')
->innerJoin('t', 'key_for_tools', 'kft', 'kft.tools_id = t.id')
->innerJoin('t', 'keywords', 'k', 'kft.key_id = k.id')
->innerJoin('t', 'users', 'u', 't.user_id = u.id');
for($i=0; $i < sizeof($tags); $i++){
$queryBuilder->andWhere('k.key LIKE %' . $queryBuilder->createPositionalParameter($tags[$i]) . '%');
}
$result = $this->db->fetchAll($queryBuilder->getSql(),$tags);
但这会生成一个类似的字符串:
SELECT t.id, t.status, t.title, t.price, u.username FROM tools t INNER JOIN key_for_tools kft ON kft.tools_id = t.id INNER JOIN keywords k ON kft.key_id = k.id INNER JOIN users u ON t.user_id = u.id WHERE (k.key LIKE %'tag'%) 但我想要% 之间的'
如果有人知道怎么做
【问题讨论】:
标签: mysql sql query-builder doctrine-query