1
大家。
我在蒙戈由下面的查询和使用robomongo测试它 - 它的工作。
db.customers.find({$or: [
{emailaddress: /.*test.*/},
{address: /.*test.*/},
{firstname: /.*test.*/}
]})
现在我尝试使用活动记录,以实现Yii2此查询:
$fields = [];
$search = '/.*' . $search . '.*/';//in $search was the word 'test'
foreach($this->searchFields as $field) {
$fields["$field"] = "$search";
}
$text_search = [ '$or' => ['$search' => $fields]];
$query = $query->where($text_search);
$provider = new ActiveDataProvider([
'query' => $query,
]);
它添加$或工作过,现在它给我一个错误:
"name": "MongoDB Exception",
"message": "Cannot run command count(): exception: $or needs an array",
"code": 20,
"type": "yii\\mongodb\\Exception",
使用print_r打印$ test_search给我:
Array
(
[$or] => Array
(
[$search] => Array
(
[emailaddress] => : /.*test.*/
[address] => : /.*test.*/
[firstname] => : /.*test.*/
)
)
)
如果我删除'$search' =>
,只留下
$text_search = [ '$or' => [$fields]];
它给了我:
{
"recordsTotal": 0,
"recordsFiltered": 0,
"data": []
}
有谁知道如何使这个查询在Active Record的工作?请给我一些想法。
在此先感谢。
谢谢,我的朋友,。它的工作,你解释我的错误 - 我不能指望的最好的答案,我真的很感激。 – Bandydan