Я использую Symfony и Mongo. У меня есть документы для каждой из моих коллекций монго. В документах я определил все поля как строки, хотя некоторые из них обычно содержат числовые значения.
Я выполняю поиск в этих коллекциях и фильтрую их следующим образом:
private function like($paramValue) {
return new \MongoRegex("/.*" . FilterHelper::castValue(FilterType::INT, $paramValue) . ".*/ix");
}
...
$qb->field('articleId')->equals( $this->like($params['articleCode']) );
Тем не менее, значения сохраняются как числа в монго, "article_id": NumberInt(197568)
, Документ написан так:
/**
* @MongoDB\String(name="article_id")
*/
protected $articleId;
Естественно, запросы не выполняются, потому что тип не является ожидаемым. Как я могу это исправить? Я не могу предположить $articleId
это число.
Ты думал о strval функция php?
$qb->field('articleId')->equals( $this->like(strval($params['articleCode'])) );
Конечно, вы должны подать заявку strval
прежде чем передать его like()
функционировать и проверить возвращаемое значение
Других решений пока нет …