Mysql 类似SQLbuilder的参数,带%
我正试图用Mysql 类似SQLbuilder的参数,带%,mysql,sql,query-builder,doctrine-query,Mysql,Sql,Query Builder,Doctrine Query,我正试图用像一样搜索我的数据库,现在builder工作得很好,除了一件事: 我希望在每个参数的前面和后面都有一个%,但按照构建器的工作方式,在执行每个参数时,它会在每个参数的前面和后面放置一个'。所以我不能手动添加它们 有办法做到这一点吗 以下是查询: $queryBuilder = $this->db->createQueryBuilder(); $queryBuilder ->select('t.id', 't.status', 't.title', 't.pric
像一样搜索我的数据库,现在builder工作得很好,除了一件事:
我希望在每个参数的前面和后面都有一个%
,但按照构建器的工作方式,在执行每个参数时,它会在每个参数的前面和后面放置一个'
。所以我不能手动添加它们
有办法做到这一点吗
以下是查询:
$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);
$queryBuilder=$this->db->createQueryBuilder();
$queryBuilder
->选择('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\u id=k.id')
->innerJoin('t','users','u','t.user_id=u.id');
对于($i=0;$iandWhere('k.key LIKE%'。$queryBuilder->CreatePositionParameter($tags[$i])。%');
}
$result=$this->db->fetchAll($queryBuilder->getSql(),$tags);
但这会生成如下字符串:
选择t.id、t.status、t.title、t.price、u.username FROM tools t internal JOIN key\u用于kft.tools上的kft工具kft\u id=t.id internal JOIN关键字k ON kft.key\u id=k.id internal JOIN users u ON t.user\u id=u.id其中(k.key LIKE%'标记“%)
但我想要%
之间的
如果有人知道怎么做,就像@VMAI所说的,这就解决了我的问题
for($i=0; $i < sizeof($tags); $i++){
$queryBuilder->andWhere($queryBuilder->expr()->like('k.key', $queryBuilder->expr()->literal('%' . $tags[$i] . '%')));
}
for($i=0;$iandWhere($queryBuilder->expr()->like('k.key',$queryBuilder->expr()->literal('%'.$tags[$i].%'));
}
直接将其添加到参数中,如下所示:
$queryBuilder->andWhere('k.key LIKE ' . $queryBuilder->createPositionalParameter('%' . tags[$i] . '%'));
所有应该在qoutes之间的“东西”都必须添加到qoutes中应该对您有所帮助