在许多实体中拥有相同实体字段的最佳方式是什么? 例如,“相关实体”将出现在 8 个表中。
class User
{
#[ORM\Column(length: 255)]
private ?string $relatedEntity = null;
}
class User2
{
#[ORM\Column(length: 255)]
private ?string $relatedEntity = null;
}
“User”中的RelatedEntity 就像其他人的父字段。有什么方法可以将它们相互映射以使查询更简单吗?
我尝试过 OneToOne,但每次它都会添加新用户,但我不需要这样做。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您有几个选择,您可以使用特征 a> 或使用抽象类。就像 @LBA 在他的回答中所说,如果您的实体有许多共同点并且只有一些差异,您可能需要研究 继承映射。
特征示例:
trait RelatedEntityTrait { #[ORM\Column(length: 255)] private ?string $relatedEntity = null; public function getRelatedEntity(): ?string { return $this->relatedEntity; } public function setRelatedEntity(?string $relatedEntity): void { $this->relatedEntity = $relatedEntity; } } class User { use RelatedEntityTrait; } class User2 { use RelatedEntityTrait; }抽象类示例:
abstract class BaseUser { #[ORM\Column(length: 255)] private ?string $relatedEntity = null; public function getRelatedEntity(): ?string { return $this->relatedEntity; } public function setRelatedEntity(?string $relatedEntity): void { $this->relatedEntity = $relatedEntity; } } class User extends BaseUser { } class User2 extends BaseUser { }