我正在使用Symfony和Mongo。我有我的每个mongo集合的文档。在文档中,我将所有字段定义为字符串,即使其中一些字段通常包含数值。
我在这些集合中执行搜索并按照以下方式对其进行过滤:
private function like($paramValue) {
return new \MongoRegex("/.*" . FilterHelper::castValue(FilterType::INT, $paramValue) . ".*/ix");
}
...
$qb->field('articleId')->equals( $this->like($params['articleCode']) );
但是,值在mongo "article_id": NumberInt(197568)
中保持为数字。该文件写得如下:
/**
* @MongoDB\String(name="article_id")
*/
protected $articleId;
当然,查询失败,因为类型不是预期的。我怎样才能解决这个问题?我不能假设$articleId
是一个数字。
答案 0 :(得分:0)
您是否考虑过strval php功能?
$qb->field('articleId')->equals( $this->like(strval($params['articleCode'])) );
当然,您应该在strval
函数传递之前应用like()
并验证返回值