我有一个MongoDBException:
"通过调用Bundle \ Document \ Property :: $ fieldName查找无效 (criteriaWith)"
我不明白这里有什么问题。有人能帮帮我吗?
这里是堆栈跟踪:
1。在vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/MongoDBException.php
第38行
public static function invalidFindByCall($documentName, $fieldName, $method) {
return new self(sprintf('Invalid find by call %s::$fieldName (%s)', $documentName, $fieldName, $method));
}
MongoDBException :: invalidFindByCall(' \ Bundle \ Document \ Property', ' criteriawith',' findByCriteriaWith')
在vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/DocumentRepository.php
第222行
if ($this->class->hasField($fieldName)) {
return $this->$method(array($fieldName => $arguments[0]));
} else {
throw MongoDBException::invalidFindByCall($this->documentName, $fieldName, $method . $by);
}
DocumentRepository ->__call ('findByCriteriaWith', array(array('name' => 'ho')))
src/Bundle/Controller/PropertyController.php
第286行
else {
criteria['name'] = $name;
$entities = $repository->findByCriteriaWith($criteria);
}
日志消息:
CRITICAL请求未捕获的PHP异常 Doctrine \ ODM \ MongoDB \ MongoDBException:"无效的逐个调用 Bundle \ Document \ Property :: $ fieldName(criteriaWith)"在 供应商/教义/ mongodb的-ODM / LIB /学说/ ODM / MongoDB的/ MongoDBException.php 第38行语境:{"例外": "对象(学说\ ODM \ MongoDB的\ MongoDBException)" }
答案 0 :(得分:0)
让我们浏览ODM的文档存储库magic __call
method(因为findByCriteriaWith
之后所谓的内容不存在)并突出显示有趣的部分。
首先我们看到
if (strpos($method, 'findBy') === 0) {
$by = substr($method, 6, strlen($method));
$method = 'findBy';
}
您的方法名称以" findBy"开头。因此,我们将在$method = 'findBy'
和$by = 'CriteriaWith'
之后输入此块,稍后$by
获得驼峰作为字段/属性名称的标准,并留给我们$fieldName = 'criteriaWith'
1}}。接下来我们看到的是$this->class->hasField($fieldName)
检查哪个会导致您遇到异常,因为您的类没有criteriaWith
字段。
总结$repository->findBySomething($value);
相当于$repository->findBy(['something' => $value])
,如果您的文档中不存在字段,则会抛出异常。