2

いくつかのクエリを実行する必要がありますが、さまざまな方法を試しているときに、次の行が教義によって「認識」されていないことがわかりました(エラーが発生します):

たとえば、データベース内の一部のデータがリテラルと等しいかどうかを比較したい場合、ここで条件は次のとおりです。

('u.gender = M')

これは私のテーブルがどのように見えるかです:

id  gender
 1     M
 2     M
 3     F

セマンティックエラーをスローします。また、そのように日付を比較するとき。

数字と直接比較することは受け入れられているのに、これが教義によって認識されない理由を知りたいです。

調子:('u.age = 15')

4

2 に答える 2

3

この方法でできる最初のオプション-

 $M = 'M';
 $age = 15;
 $query = $this->createQueryBuilder('t')
                ->where('u.gender = :M AND u.age = :age')
                ->setParameters(array('M'=> $M,'age'=>$age);

これを行う別の方法-

$query = $this->createQueryBuilder("t")
              ->where("u.gender = 'M' AND u.age = 15");
于 2013-11-05T08:22:25.070 に答える
0

したがって、私の質問に対する答えは、ドクトリンが M を文字列として認識しなかったために機能していなかったということだと思います。@Mehedi が言ったように、逆コンマを使用する必要があったのはそのためです。

これを解決する別の方法は、クエリ ビルダーを使用することでした。

    $v = 'M';
    $condition = $this->qb->expr()->eq('u.gender', $this->qb->expr()->literal($v));

しかし、それは長くて読みにくいと思います。したがって、最短のものは次のようになります。

    $condition = ("u.gender = 'M'");
于 2013-11-05T18:42:46.173 に答える