有人可以告诉我它是否可以覆盖doctrine2 persistentobject magic getters \ setters?我想做以下事情: -
public function setDob($dob)
{
$this->dob= new \Date($date);
}
但是我的实体被定义为: -
使用Doctrine \ Common \ Persistence \ PersistentObject; 使用Doctrine \ ORM \ Mapping作为ORM;
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="Ajfit\Repository\User")
* @ORM\HasLifecycleCallbacks
*/
class User extends \Doctrine\Common\Persistence\PersistentObject
{
/**
* @var date $dob
*
* @ORM\Column(name="dob", type="date")
*/
protected $dob;
}
使用以下命令创建实体时,不会调用公共函数setDob: -
public function getNewRecord() {
return $this->metadata->newInstance();
}
我收到以下错误: -
Notice:- array to string conversion ...Doctrine\DBAL\Statement.php on line 98
任何帮助都会受到很大的帮助。
由于
安德鲁
答案 0 :(得分:1)
__call
。
你在做什么是通过元数据创建一个新实例。你在做什么可能假设ORM应该调用__construct
或任何setter / getter。 Doctrine避免在通过元数据/水合作用生成对象时调用对象上的任何方法(检查ClassMetadataInfo#newInstance以查看它是如何完成的),因为它只知道它的字段。
这使您可以完全独立于Doctrine的逻辑。
关于通知,这是来自Doctrine\DBAL\Statement的完全不同的问题,这表明我在查询中可能有一些错误的参数绑定。这应该单独处理。