2016-05-31 27 views
1

を拘束されなかった私は、このようなコードがあります: Yii2 SQLSTATE [HY093]:無効なパラメータ番号:パラメータが全く私のModelSearchで

$candidates = Candidate::find(); 
$dataProvider = new ActiveDataProvider([ 
    'query' => $candidates 
]); 

をしてから、私はこのクエリを続行しようとしています:

$candidates->andFilterWhere([ 
    ' or ', 
    ['like', 'candidate.something', $this->word], 
    ['like', 'candidate.anything', $this->word] 
]); 

と最後に私は$dataProviderを返します。

私はコードの一部のようなものを何度も使用され、決してそれで何か問題があったが、予想外に全体の後、私はまだ同じエラー受信しようとしていることを覚えておいてください

:私が書くとき

SQLSTATE[HY093]: Invalid parameter number: no parameters were bound 
The SQL being executed was: SELECT COUNT(*) FROM (SELECT * FROM `candidate` WHERE Array OR 'like' GROUP BY `candidate`.`id`) `c` 

をその方法で、コードの一部:

$candidates->andFilterWhere([ 
    ' or ', 
    'candidate.`something` LIKE "%' . $this->word . '%" ', 
    'candidate.`anything` LIKE "%' . $this->word . '%"', 
]); 

動作しているようですが、私はそのようにそれを行うにはしたくありません。私は問題の手がかりが他の場所にあるかもしれないと思うが、どこでそれを探すべきか分からない。

訴訟はありますか?

よろしくお願いいたします。解決しよう

[EDIT]:

@arogachevのプロンプトが正しい方法であることが判明:それは働かせたはちょうど "or" からスペースを削除します。 QueryInterfaceは、トリムされていない条件演算子を認識しません。なぜなら、それがだまされた理由です。

+1

プロセスを完全に構築するクエリを表示してください。また、スペースを 'または'で区切ってみてください。例[here](http://www.yiiframework.com/doc-2.0/yii-db-queryinterface.html#where%28%29-detail)を参照してください。 – arogachev

+1

@arogachev、そうです。問題は 'or'演算子を囲むスペースで問題になっていました。ありがとう! – peterekkk

答えて

1

のような使用してみてくださいまたは:arogachevのプロンプト@

は正しい方法であることが判明:ちょうど "or" からスペースを削除することが働かせました。 QueryInterfaceは、トリムされていない条件演算子を認識しません。なぜなら、それがだまされた理由です。

0

[EDIT]解決しよう

$candidates->andFilterWhere([ 
    ['or like', 'candidate.something', $this->word], 
    ['or like', 'candidate.anything', $this->word] 
]); 
関連する問題