从 Symfony 6.1 升级到 7 后,我收到了该错误消息:
断言错误:断言($映射实例ManyToManyOwningSideMapping)
我们没有关于代码的哪一部分导致此错误出现的信息。但我们可以看出它一定来自刚刚升级的教义。
我尝试清除缓存,即使我在常规升级后已经这样做了,以查看错误是否停止显示,但没有任何结果。
#[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 等关系中考虑可空的情况,这种方法通常就足够了。