все.
Я написал следующий запрос в Монго и протестировали его, используя robomongo - это сработало.
db.customers.find({$or: [
{emailaddress: /.*test.*/},
{address: /.*test.*/},
{firstname: /.*test.*/}
]})
Теперь я пытаюсь реализовать этот запрос в Yii2 с помощью Active Record:
$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",
Печать $ test_search с использованием print_r дает мне:
Array
(
[$or] => Array
(
[$search] => Array
(
[emailaddress] => : /.*test.*/
[address] => : /.*test.*/
[firstname] => : /.*test.*/
)
)
)
Если удалить '$search' =>
и оставить только
$text_search = [ '$or' => [$fields]];
это дает мне:
{
"recordsTotal": 0,
"recordsFiltered": 0,
"data": []
}
Кто-нибудь знает, как сделать этот запрос работает в Active Record? Пожалуйста, дайте мне несколько идей.
Заранее спасибо.
Спасибо, мой друг ,. Это сработало, и вы объяснили мне мои ошибки - лучший ответ, который я даже не мог ожидать, я действительно это ценю. – Bandydan