0
Symfony와 Mongo를 사용하고 있습니다. 내 몽고 컬렉션 각각에 대한 문서가 있습니다. 문서에서 나는 모든 필드를 문자열로 정의했는데, 그 중 일부는 일반적으로 숫자 값을 포함하지만.Symfony : 숫자 만 포함하는 문자열은 숫자로 유지되고 쿼리는 실패합니다.
은이 같은 이러한 컬렉션을 검색을 수행하고이를 필터 :
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
를 적용해야합니다. Strval은 문자열 값을 반환하지만 몽고는 여전히 숫자 값을 포함하며 필터는 여전히 실패합니다. – ecc그래서 intval() 함수를 사용하십시오. 어쩌면 나는 그 반대를 이해했다. :) – DonCallisto
음, 대부분의 경우 작동하지만 문제는 Mongo가 숫자 문자열에 대해 숫자 유형을 가정하는 것이지만 때로는 발생하지 않는 숫자가 아닌 문자열에 대해 문자열 유형을 가정하는 것입니다. – ecc