我在zend框架中有两个学说实体 school 和 schoolLocation
学校实体
/**
* @var schoolLocation
*
* @ORM\OneToMany(targetEntity="\School\Entity\SchoolLocation", mappedBy="school", cascade={"persist","remove"})
*
*/
protected $schoolLocation;
和
schoolLocation实体
/**
* @var school
*
* @ORM\ManyToOne(targetEntity="\School\Entity\School", inversedBy="schoolLocation")
* @ORM\JoinColumn(name="school_id", referencedColumnName="id")
*/
protected $school;
我已经显示了双向关联。现在,每当我尝试获取school_location
$schoolLocation = $this->entityManager->getRepository(SchoolLocation::class)->findAll();
和print_r($schoolLocation)
我收到以下错误消息:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65015808 bytes) in F:\projects\test\module\School\src\Service\SchoolManager.php on line 190
有人可以帮助我告诉我,我在这里做错了什么吗?
答案 0 :(得分:0)
在具有圆形关系的对象上使用print_r时,它将继续打印该关系,直到内存用完为止。
class A {
public $name = "class a";
public $b;
public function __construct(B $b) {
$this->b = $b;
}
}
class B {
public $name = "class b";
public $a;
public function __construct() {
$this->a = new A($this);
}
}
print_r(new B);
此代码演示了正在发生的事情。显示的重新安装数量取决于您的PHP配置。
我建议使用Xdebug而不是打印,这有很多优点。根据您的情况,可以轻松检查圆形关系。