Symfony AssertionError:断言($mapping instanceof ManyToManyOwningSideMapping)

问题描述 投票:0回答:2

从 Symfony 6.1 升级到 7 后,我收到了该错误消息:

断言错误:断言($映射实例ManyToManyOwningSideMapping)

我们没有关于代码的哪一部分导致此错误出现的信息。但我们可以看出它一定来自刚刚升级的教义。

我尝试清除缓存,即使我在常规升级后已经这样做了,以查看错误是否停止显示,但没有任何结果。

php symfony error-handling upgrade
2个回答
0
投票

我找到了解决方案!

我知道这与我的代码中过时的内容有关,特别是与学说属性有关,但我在这里得到了快速答案

总而言之,尝试注释/删除与实体中的多对多关系相关的 JoinColumn 或 JoinTable 属性,它应该可以工作。

希望有帮助!


0
投票

#[ORM\实体] 班级设立 { #[ORM\ManyToMany(targetEntity:EstablishmentAdd::class,mappedBy:'Establishment')] #[ORM\JoinColumn(可为空: true)] 私人收藏$buildingAdds;

public function __construct() {
    $this->establishmentAdds = new ArrayCollection();
}

public function getEstablishmentAdds(): Collection {
    return $this->establishmentAdds;
}

}

删除 => #[ORM\JoinColumn(nullable: true)]

在此示例中,Establishment 与EstamentmentAdd 具有ManyToMany 关系。 $EstamentAdds 属性在Establishment 构造函数中初始化为ArrayCollection。这意味着即使没有EstamentmentAdd实体与Establishment关联,$EstamentAdds属性也将是一个空集合而不是null。

因此,虽然您无法在 ManyToMany 关系上显式设置 nullable=true,但您可以通过允许集合为空来管理“无关系”状态。对于大多数在 OneToMany 或 ManyToOne 等关系中考虑可空的情况,这种方法通常就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.