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 に答える