2017-05-11 7 views
-1

CDbCriteriaYii 1でデータベースを照会しようとしています。列が見つかりません:1054未知の列 '配列句'の配列 'yii

$criteria->addInCondition('t.id', $dealIdArr); 
$criteria->order = "FIELD(t.id, $dealIdArr)"; 

そして、これは$dealIdArrであり、それは空ではありません:私は何をやっていることである

Array ([0] => 3 [1] => 2) 

しかし、スクリプトを実行すると、それはエラーを返します:

CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'order clause'.

I」これで何が間違っているのか理解できませんか?どんな助け?

+1

私はあなたがするtriyngされているのか分からないが、配列の文字列表現は、単語 'Array' –

答えて

2

現在、両方の条件に配列を追加しています。私はYiiにはそれほど精通していませんが、配列ではなく文字列を期待しています。

implode()それを文字列に変換することができます。

$dealIdStr = implode(", ", $dealIdArr); 
$criteria->addInCondition('t.id', $dealIdArr); // You can use array here 
$criteria->order = "FIELD(t.id, $dealIdStr)"; // This expects a string 

あなたの配列は、現在唯一の整数(3、2)が含まれているように、あなたはそれを引用する必要はありません - しかし、何らかの理由で、配列が文字列が含まれている場合、あなたは彼らが

を行うことによって、MySQLの中で引用されている必要があり
$dealIdStr = implode("', '", $dealIdArr); 
$criteria->order = "FIELD(t.id, '$dealIdStr')"; 

追加された一重引用符に注意してください。

文字列として配列を使用しようとすると、PHPは単純に "Array"を出力します。これはあなたが今見ているものです。そして引用符で囲まれていないので、MySQLは文字列ではなくカラムを考える。

+0

即答してくれてありがとうは、それを手に入れています。配列の代わりに文字列を渡さなければならなかった。私の悪い! – Saani

関連する問題