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,FOS 用户:使用空输入密码编辑用户

现有数据库中的 Symfony Doctrine Sluggable 扩展

Symfony2:如何使用非默认实体管理器对用户进行身份验证?

如何在 Sonata Admin(Symfony 3.3、PHP 7)中使用自定义 javascript 为模态窗口扩展模板?

我如何在没有 symfony 的项目中重用我的 symfony 实体