我有一个数组,其中包含我已准备好将其传递给查询的条件:
数组:
('u.registered = 1','u.active = 0', 'u.gender = M')
当我传递给查询时,它使用数字比较,但不使用varchar,即M.“错误出现在”性别“中,它表示这是一个语义错误。我假设是因为我没有使用expr() - > literal('M'),但我不能这样做,因为查询是“已经构建”..
还有另一种方法,所以我不必重新编码吗?
这是代码:
public function customR($data){
// var_dump($data);die();
$this->qb = $this->em->createQueryBuilder();
$andX = $this->qb->expr()->andX();
$this->qb->select('u')
->from('models\User','u');
foreach ($data as $value){
$andX->add($value);
}
$this->qb->add('where', $andX);
$query = $this->qb->getQuery();
// var_dump($query);die();
$obj = $query->getResult();
var_dump($obj);die();
if (!empty($obj)){
return $obj;
return false;
}
}
答案 0 :(得分:0)
我发现无法做到这一点,所以我只是稍微改了一下。
我发送一个包含一些元素的数组,只是为了引用存在和不存在的内容。
所以,在我的数据服务中,我创建了一个函数和该函数的片段来解决我的问题就是这样做:
if($key == 'gender'){
foreach($value as $key=>&$v){
$condition = ('u.gender = '. $this->qb->expr()->literal($v));
$orX->add($condition);
}
}