Doctrine orm Doctrine Lifecycle PrePersist:更改属性名而不是数据库列名
当挂接到预更新生命周期回调时,$eventArgs->getEntityChangeSet似乎返回数据库列名,而不是对象属性名。例如,如果定义了以下实体:Doctrine orm Doctrine Lifecycle PrePersist:更改属性名而不是数据库列名,doctrine-orm,Doctrine Orm,当挂接到预更新生命周期回调时,$eventArgs->getEntityChangeSet似乎返回数据库列名,而不是对象属性名。例如,如果定义了以下实体: /** * @ORM\Entity */ class Something { ... /** * @ORM\Column(name="some_property", type="integer") */ protected $someProperty; ... } 然后在触发侦听
/**
* @ORM\Entity
*/
class Something {
...
/**
* @ORM\Column(name="some_property", type="integer")
*/
protected $someProperty;
...
}
然后在触发侦听器时更新$someProperty:
class Listener {
public function preUpdate(PreUpdateEventArgs $eventArgs) {
\Doctrine\Common\Util\Debug::dump($eventArgs->getEntityChangeSet());
die();
}
}
输出为:
array (size=1)
'some_property' =>
array (size=2)
0 => int 1
1 => int 2
有没有办法将数组键作为“someProperty”而不是“someu属性”获取
为清晰起见,第二个示例:
/**
* @ORM\Column(name="full_name", type="integer")
*/
protected $firstAndLastName;
我应该返回“firstAndLastName”而不是“full_name”作为数组键。try-Doctrine\Common\definctor::camellize($key)我想,与其简单地对结果进行camel-casting,不如知道如何返回属性名而不是数据库列。我在这个问题上增加了第二个例子。