【发布时间】:2023-03-10 09:23:01
【问题描述】:
我有Movie 实体,它与Actor、Director、Producer,Company` 等实体有ManyToMany 连接。
在编辑电影时,有很多实体(演员:90k,导演:40k,制片人:20k,公司:40k)可供选择。
当我尝试在 Sonata Admin 中为我的实体加载“编辑”页面时,我收到错误 500,并且 php 日志在以下文件之一中显示 Allowed memory size of 134217728 bytes exhausted:
\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php on line 2577
\vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\AbstractHydrator.php on line 296
\vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\ObjectHydrator.php on line 529
当每个实体在 DB 中有大约 10 个对象时,它适用于固定装置。
我目前正在测试迁移,我假设编辑页面上会有大量数据,页面本身可能运行缓慢(将有四个 select2 字段,每个多选,每个都有数千个实体连接到已编辑的实体),但我很惊讶它发生在 Doctrine 级别。我希望 Sonata Admin 能够处理它,因为它在列出大量 Actor 对象、分页等方面没有问题。
我应该如何安排与Movie 实体的合作?你能给我一些建议吗?我在考虑 changing that CRUD page 所以 Select2 会使用 Ajax 获取数据,但我仍然不确定这是一个最佳主意。
【问题讨论】:
标签: symfony out-of-memory sonata-admin