2012-04-19 8 views
3

私はDoctrine ORMを使ってsymfony 1.4で開発しています。 ID付きの配列を使ってNOT IN句を作成することはできません。これは私のコードです:Do IN句Doctrine_Queryを作成するには?

$results = Doctrine_Query::create() 
    ->from('Asset a') 
    ->where('a.id NOT IN (?)', implode(',', $ids)) 
    ->execute(); 

生成され、このクエリのSQLはこの1つである:

WHERE (a.id NOT IN ('1,5,6,7,8,9,10,11,12,13,14,15,17,18,20,24,25,26,29,30,28')) 

あなたが見ることができるように、文字列のようなIDSで満たされた配列を処理しています。私は、配列の破なしも試みたが、私はこのエラーを取得:

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens 

除外のIDを含む配列$ IDが平野数値の一つです。

この句の正しい構文がわかりません。ありがとう

答えて

2

whereNotInold doc but still ok)を使用する必要があります。

$results = Doctrine_Query::create() 
    ->from('Asset a') 
    ->whereNotIn('a.id', $ids) 
    ->execute();