0

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

4

1 回答 1

0

你有没有想过strval php 函数?

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

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

于 2014-09-22T14:18:42.477 回答