gpt4 book ai didi

php - Symfony - 多对多关系刷新时的内存问题

转载 作者:行者123 更新时间:2023-12-04 03:51:49 26 4
gpt4 key购买 nike

在我的 symfony 项目(5.x 版本)中,我在 Metas 和标签之间有一个简单的多对多关系(没有获取也没有定义级联)。

class Meta
{
...

/**
* @ORM\ManyToMany(targetEntity="Tag", mappedBy="meta")
* @ORM\OrderBy({"name" = "ASC"})
*/
protected $tags;
}
class Tag
{
...

/**
* @ORM\ManyToMany(targetEntity="Meta", inversedBy="tags")
* @ORM\JoinTable(name="app_meta_tag")
* @ORM\JoinColumn(name="meta_id")
*/
protected $meta;
}
我可以有 40 000 个具有相同标签的元数据(例如“测试”)。
当我将“测试”标签添加到 Meta 中,然后持久化并刷新时,与此标签相关的所有 Meta 都将被刷新......并由于内存限制返回 500 错误。
这种行为似乎与教义文档相矛盾: https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/working-with-associations.html#persistence-by-reachability-cascade-persist
有人可以解释一下吗?
谢谢 !

最佳答案

当您在 Doctrine 中关联两个实体时,您有一个拥有方和一个反面,在拥有方更新时,Doctrine 将保存所有链接的反面。在相反的情况下,什么都不会被保存。
这里的拥有方是 Tag (inversed-by="tags"),这意味着更新只会在您更新 Tag 时发生。
您应该反转mappedBy 和inversedBy 目标类。

关于php - Symfony - 多对多关系刷新时的内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64337839/

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