Symfony:只包含数字的字符串作为数字,查询失败

时间:2014-09-22 14:12:21

标签: php mongodb symfony odm

我正在使用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是一个数字。

1 个答案:

答案 0 :(得分:0)

您是否考虑过strval php功能?

$qb->field('articleId')->equals( $this->like(strval($params['articleCode'])) );

当然,您应该在strval函数传递之前应用like()并验证返回值