在我的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 . '%"',
]);
它似乎有效,但我不想这样做。我想问题的线索可能在其他地方,但我不知道我应该在哪里寻找它。
任何sugestions?
最好的问候。
[编辑]已解决:
@arogachev的提示结果是正确的:只是删除空格“or
”使其正常工作。
QueryInterface无法识别未被修剪的条件运算符,这就是它被欺骗的原因(顺便说一下)。
答案 0 :(得分:1)
[编辑]已解决:
@ arogachev的提示结果证明是正确的:只需删除" or
"使它工作。 QueryInterface不识别未被修剪的条件运算符,这就是它被欺骗的原因(顺便说一下)。
答案 1 :(得分:0)
尝试使用或喜欢
$candidates->andFilterWhere([
['or like', 'candidate.something', $this->word],
['or like', 'candidate.anything', $this->word]
]);