Здравствуйте, ситуация следующая:
Был установлен пакет jenssegers/mongodb, недели 3 назад вышло обновление и поддержка для laravel 10, по этой причине пришлось мигрировать.
Чего только не пробовал, но так и не получается понять в чём проблема.
P.s если получить запрос, который генерирует ORM и отправить в mong'y, то запрос корректный.
Запрос:
Item::query()->select('account_id', 'item_id', 'offer_id', 'fbo_sku', 'fbs_sku', 'barcodes')
->orWhere('item_id', ''like, "%{$searchable}%")
->orWhere('name', 'like', "%{$searchable}%")
->orWhereRaw(['$where' => "/^{$searchable}.*/.test(this.item_id)"])
->orWhereRaw(['$where' => "/^{$searchable}.*/.test(this.fbo_sku)"])
->orWhereRaw(['$where' => "/^{$searchable}.*/.test(this.fbs_sku)"])
->get();
Ошибка: MongoDB\Driver\Exception\CommandException
Текст ошибки: $where is not allowed in this context
Результат документа:
['ok' => 0.0, 'errmsg' => '$where is not allowed in this context', 'code' => 2, 'codeName' => 'BadValue']
Также приведу запрос, который возвращает ORM:
items.find({"$or":[{"item_id":{"$regex":"^.*12435.*$","$options":"i"}},{"name":{"$regex":"^.*12435.*$","$options":"i"}},{"offer_id":{"$regex":"^.*12435.*$","$options":"i"}},{"barcodes":{"$regex":"^.*12435.*$","$options":"i"}},{"$where":"\/^12435.*\/.test(this.item_id)"},{"$where":"\/^12435.*\/.test(this.fbo_sku)"},{"$where":"\/^12435.*\/.test(this.fbs_sku)"}]},{"limit":50,"projection":{"account_id":true,"item_id":true,"offer_id":true,"fbo_sku":true,"fbs_sku":true,"barcodes":true,"primary_image":true,"old_price":true,"marketing_price":true,"price":true,"status":true,"name":true},"typeMap":{"root":"array","document":"array"}})