0

我有一个带有条件的数组,我已经准备好将它传递给查询:

大批:

('u.registered = 1','u.active = 0', 'u.gender = M')

当我传递给查询时,它适用于数字比较,但不适用于 M 的 varchar。错误出现在“性别”中,它表示这是一个语义错误。我假设是因为我没有使用 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;
    }
}
4

1 回答 1

0

我发现没有办法做到这一点,所以我只是稍微改变了一点。

我发送了一个包含一些元素的数组,只是为了了解存在的内容和不存在的内容。

因此,在我的数据服务中,我创建了一个函数和该函数的片段来解决我的问题是这样做:

if($key == 'gender'){
    foreach($value as $key=>&$v){
    $condition = ('u.gender = '. $this->qb->expr()->literal($v));
    $orX->add($condition);
            }
        }
于 2014-01-29T18:07:36.647 回答