Как я могу иметь столбцы объекта в суперклассе? - PullRequest
1 голос
/ 07 августа 2020

Я хочу иметь некоторые свойства в суперклассе / базовом классе Entities. Самый простой пример того, чего я хочу достичь, - это:

<?php
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
}

Есть ли способ сделать это с помощью doctrine ORM? Приведенный выше пример не работает, Doctrine не находит первичный ключ в SomeEntity. Вы можете сделать это, сделав BaseEntity самой сущностью, но я хочу этого избежать.

1 Ответ

0 голосов
/ 16 августа 2020

В основном вам нужно использовать Отображенные суперклассы . В приведенном выше примере это будет выглядеть так:

<?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 , в зависимости от того, что вы пытаетесь выполнить sh .

...