Symfony 扩展实体
Posted
技术标签:
【中文标题】Symfony 扩展实体【英文标题】:Symfony extends entity 【发布时间】:2021-03-22 05:12:59 【问题描述】:它可以通过其他实体 gtoup 扩展实体组也改变 OneToOne/OneToMany 关系。
例如,我尝试通过用户扩展 UserTemp,但在架构验证时我收到映射无效的错误。
类用户
/**
* @ORM\Table(name="d1_user")
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $name;
/**
* @var UserAddress
*
* @ORM\OneToMany(targetEntity="UserAdress", mappedBy="user", cascade="persist", "remove", orphanRemoval=true)
*/
private $address;
类 UserTemp
/**
* @ORM\Table(name="d1_user")
* @ORM\Entity(repositoryClass="App\Repository\UserTempRepository")
*/
class UserTemp extends User
/**
* @var UserTempAddress
*
* @ORM\OneToMany(targetEntity="UserTempAdress", mappedBy="user", cascade="persist", "remove", orphanRemoval=true)
*/
private $address;
【问题讨论】:
了解类表继承和单表继承:doctrine-project.org/projects/doctrine-orm/en/2.7/reference/…,然后如何覆盖关联:doctrine-project.org/projects/doctrine-orm/en/2.7/reference/… 【参考方案1】:你试试
/**
* @EntityExtension("User") //path Class User
*/
trait UserTempTrait
/**
* @var UserTempAddress
*
* @ORM\OneToMany(targetEntity="UserTempAdress", mappedBy="user", cascade="persist", "remove", orphanRemoval=true)
*/
private $address;
【讨论】:
以上是关于Symfony 扩展实体的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 使用父级中的一个字段和具有不同注释/映射的扩展实体
现有数据库中的 Symfony Doctrine Sluggable 扩展
Symfony2:如何使用非默认实体管理器对用户进行身份验证?
如何在 Sonata Admin(Symfony 3.3、PHP 7)中使用自定义 javascript 为模态窗口扩展模板?