gpt4 book ai didi

doctrine-orm - 使用 $em->find() 时未调用 Doctrine2 __constructor; ?如何正确加载实体?

转载 作者:行者123 更新时间:2023-12-04 02:32:35 25 4
gpt4 key购买 nike

我正在学习doctrine2,并且在如何自动调用构造函数时遇到了问题。
例如,在我的实体中,我有

/**
* @Entity
*/
class User{
....
public function __construct() {
exit('in');
}
}

当我以这种方式获取对象时:
$userObj = $em->find('User', 1);

我确实从数据库中获取了该对象,但从未调用过构造函数。
我想在构造函数中放入一些常见的东西,比如验证规则,或者甚至从学说文档中放入示例代码,比如
        $this->comments = new ArrayCollection();

当我在代码中创建新对象以创建用户时,这当然有效
$user = new User(); //now constructor works just fine

现在,获取实体的“正确”方式是什么?我怀疑每次我用 $user0bj->__construct() 使用 $em->find() 时我都必须手动调用构造函数; ?那么这会有点糟糕......或者我应该使用其他的东西 ->find() 来正确地获取单个实体?
我知道我可以使用@PrePersist,并且我正在使用它来实际进行验证检查等。
我想我可能在这里遗漏了一些东西,或者我试图以一种糟糕的方式使用构造函数。感谢您的任何解释和指导!

最佳答案

我很确定 find或类似的不应调用构造函数...

您需要挂入 @PostLoad事件。

关于doctrine-orm - 使用 $em->find() 时未调用 Doctrine2 __constructor; ?如何正确加载实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4773976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com