我想将参数占位符 - 例如 ?1 - 与 % 通配符一起使用。也就是说,类似于:“u.name LIKE %?1%”(尽管这会引发错误)。文档有以下两个例子:1。
// Example - $qb->expr()->like('u.firstname', $qb->expr()->literal('Gui%'))
public function like($x, $y); // Returns Expr\Comparison instance
我不喜欢这样,因为没有针对代码注入的保护。
2.
// $qb instanceof QueryBuilder
// example8: QueryBuilder port of: "SELECT u FROM User u WHERE u.id = ?1 OR u.nickname LIKE ?2 ORDER BY u.surname DESC" using QueryBuilder helper methods
$qb->select(array('u')) // string 'u' is converted to array internally
->from('User', 'u')
->where($qb->expr()->orx(
$qb->expr()->eq('u.id', '?1'),
$qb->expr()->like('u.nickname', '?2')
))
->orderBy('u.surname', 'ASC'));
我不喜欢这样,因为我需要在对象的属性中搜索术语——也就是说,我需要两边都有通配符。