为了账号安全,请及时绑定邮箱和手机立即绑定

如何在超类中拥有实体的列?

如何在超类中拥有实体的列?

PHP
萧十郎 2023-09-22 14:41:51
我想在实体的超类/基类中拥有一些属性。我想要实现的最简单的例子是这样的:<?phpclass BaseEntity{    /**     * @ORM\Id     * @ORM\Column(type="integer")     * @ORM\GeneratedValue     * @var int internal ID     */    private int $id;    public function getId(): int{        return $this->id;    }}/** * @ORM\Entity * @ORM\Table(name="someentities") */class SomeEntity extends BaseEntity{    // more stuff}有没有办法用 ORM 来做到这一点?上面的例子不起作用,Doctrine在SomeEntity中找不到主键。您可以通过使 BaseEntity 本身成为实体来做到这一点,但我想避免这种情况。
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

基本上你需要做的是使用Mapped Superclasses。对于上面的例子,它看起来像这样:

<?php

/** @ORM\MappedSuperclass */

class BaseEntity{

    /**

     * @ORM\Id

     * @ORM\Column(type="integer")

     * @ORM\GeneratedValue

     * @var int internal ID

     */

    private int $id;


    public function getId(): int{

        return $this->id;

    }

}

/**

 * @ORM\Entity

 * @ORM\Table(name="someentities")

 */

class SomeEntity extends BaseEntity{

    // more stuff

}

如果您偶然发现这个问题,您可能也在寻找Embeddables,具体取决于您想要完成的任务。



查看完整回答
反对 回复 2023-09-22
  • 1 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号