Php 当不使用带有奇怪访问器的注释时,加载mongodb哈希关联数组映射的正确方法
我这样做是为了映射文档的非注释映射。但它没有赶上。我知道这是旧代码,但有人知道如何正确地映射它吗。谢谢 关联PR= 与此相关的还有: 上面的是一个中间基类,下面的是基类Php 当不使用带有奇怪访问器的注释时,加载mongodb哈希关联数组映射的正确方法,php,mongodb,Php,Mongodb,我这样做是为了映射文档的非注释映射。但它没有赶上。我知道这是旧代码,但有人知道如何正确地映射它吗。谢谢 关联PR= 与此相关的还有: 上面的是一个中间基类,下面的是基类 /** * @param string $property * @param bool $n * @param bool $m * * @return mixed */ protected function get($property, $n = false, $m = false) { $curr
/**
* @param string $property
* @param bool $n
* @param bool $m
*
* @return mixed
*/
protected function get($property, $n = false, $m = false)
{
$currentValue = $this->$property;
if (false !== $n && false !== $m) {
if (null === $n && null === $m) {
return $currentValue;
}
if (array_key_exists($n, $currentValue) && array_key_exists($m,$currentValue[$n]){
return $currentValue[$n][$m];
}
}
if (null === $n) {
return $currentValue;
}
if (array_key_exists($n, $currentValue)) {
return $currentValue[$n];
}
}
我发现并解决了这个问题。我遇到了几个问题:
- 首先,在使用ORM很长一段时间后,我感到困惑,
是mongo中的一个字段,name
是一个属性名()李>fieldName
- 其次,如果
与任何属性都不匹配,那么它就是(ORM抛出异常的地方)。因此,很难找出为什么不保存该财产。()fieldName
一切正常后。看看这个。我恢复了为令牌文档所做的变通方法,现在它也失败了。调试应该更容易,因为有一个简单的setter\getter@cordoval奇怪的访问器不是问题(:
protected $paymentrequest_nnn_amt = array();
public function getPaymentrequestAmt($n = null)
{
return $this->get('paymentrequest_nnn_amt', $n);
}
public function setPaymentrequestAmt($n, $value)
{
$this->set('paymentrequest_nnn_amt', $value, $n);
}
/**
* @param string $property
* @param bool $n
* @param bool $m
*
* @return mixed
*/
protected function get($property, $n = false, $m = false)
{
$currentValue = $this->$property;
if (false !== $n && false !== $m) {
if (null === $n && null === $m) {
return $currentValue;
}
if (array_key_exists($n, $currentValue) && array_key_exists($m,$currentValue[$n]){
return $currentValue[$n][$m];
}
}
if (null === $n) {
return $currentValue;
}
if (array_key_exists($n, $currentValue)) {
return $currentValue[$n];
}
}