【发布时间】:2016-05-31 06:17:13
【问题描述】:
在我的 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 . '%"',
]);
它似乎有效,但我不想那样做。我想问题的线索可能在其他地方,但我不知道我应该在哪里寻找它。
有什么建议吗?
最好的问候。
[编辑] 已解决:
@arogachev 的提示被证明是正确的方法:只需删除“or”中的空格即可。
QueryInterface 无法识别未修剪的条件运算符,这就是它被愚弄的原因(顺便说一下我)。
【问题讨论】:
-
请完整显示查询构造过程。还可以尝试去除
or中的空格,参见示例here。 -
@arogachev,你是对的。问题在于
or运算符周围的空间。谢谢!
标签: activerecord yii2