我们可以扩展 Doctrine 中的实体吗?
Can we extend entities in Doctrine?
我正在使用 Doctrine 进行我的第一个项目,我偶然发现了这个。
我有一个实体用户,它是一个映射的超级 class。
/**
* @ORM\MappedSuperclass
*/
abstract class User
{
/**
* @var int
*/
protected $id;
/**
* @var string
*/
protected $name;
/**
* @ORM\Embedded(class="AppBundle\Entity\Person")
* @var Person
*/
protected $person;
/**
* @var Authors[]|Collection|Selectable
*/
protected $authors;
}
我从上面的用户实体创建了一个作者实体
class Author extends User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @var int
*/
protected $id;
/**
* @ORM\JoinColumn(name="publisher_id", referencedColumnName="id", nullable=false, unique=true)
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Publisher", inversedBy="book")
* @var Publisher
*/
protected $publisher;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Publisher", mappedBy="author")
* @var Approval[]|Collection|Selectable
*/
protected $approvals;
}
我使用 Author 实体创建对象实体 Book
/**
* @ORM\Entity
* @ORM\Table(name="magazine", options={"collate":"utf8_general_ci"})
*/
class Book
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @var int
*/
protected $id;
/**
* @ORM\JoinColumn(name="publisher_id", referencedColumnName="id", nullable=false, unique=true)
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Publisher", inversedBy="book")
* @var Publisher
*/
protected $publisher;
}
我的 Publisher 实体如下:
/**
* @ORM\Entity
* @ORM\Table(name="ops_approval", options={"collate":"utf8_general_ci"})
*/
class Publisher
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @var int
*/
protected $id;
/**
* @ORM\Column(type="datetime", nullable=false)
*/
protected $createdAt;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Author", inversedBy="authors")
* @ORM\JoinColumn(name="author_id", referencedColumnName="id")
*/
protected $author;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Book", mappedBy="book"
*/
protected $book;
}
现在,我可以扩展已发布的实体来创建图书实体吗
/**
* @ORM\Entity
* @ORM\Table(name="book", options={"collate":"utf8_general_ci"})
*/
class Book extends Magazine
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @var int
*/
protected $id;
/**
* @ORM\JoinColumn(name="published_id", referencedColumnName="id", nullable=false, unique=true)
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Publisher", inversedBy="book")
* @var Publisher
*/
protected $publisher;
}
我正在使用 Doctrine 进行我的第一个项目,我偶然发现了这个。
我有一个实体用户,它是一个映射的超级 class。
/** * @ORM\MappedSuperclass */ abstract class User { /** * @var int */ protected $id; /** * @var string */ protected $name; /** * @ORM\Embedded(class="AppBundle\Entity\Person") * @var Person */ protected $person; /** * @var Authors[]|Collection|Selectable */ protected $authors; }
我从上面的用户实体创建了一个作者实体
class Author extends User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @var int
*/
protected $id;
/**
* @ORM\JoinColumn(name="publisher_id", referencedColumnName="id", nullable=false, unique=true)
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Publisher", inversedBy="book")
* @var Publisher
*/
protected $publisher;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Publisher", mappedBy="author")
* @var Approval[]|Collection|Selectable
*/
protected $approvals;
}
我使用 Author 实体创建对象实体 Book
/** * @ORM\Entity * @ORM\Table(name="magazine", options={"collate":"utf8_general_ci"}) */ class Book { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") * @var int */ protected $id; /** * @ORM\JoinColumn(name="publisher_id", referencedColumnName="id", nullable=false, unique=true) * @ORM\OneToOne(targetEntity="AppBundle\Entity\Publisher", inversedBy="book") * @var Publisher */ protected $publisher; }
我的 Publisher 实体如下:
/**
* @ORM\Entity
* @ORM\Table(name="ops_approval", options={"collate":"utf8_general_ci"})
*/
class Publisher
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @var int
*/
protected $id;
/**
* @ORM\Column(type="datetime", nullable=false)
*/
protected $createdAt;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Author", inversedBy="authors")
* @ORM\JoinColumn(name="author_id", referencedColumnName="id")
*/
protected $author;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Book", mappedBy="book"
*/
protected $book;
}
现在,我可以扩展已发布的实体来创建图书实体吗
/** * @ORM\Entity * @ORM\Table(name="book", options={"collate":"utf8_general_ci"}) */ class Book extends Magazine { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") * @var int */ protected $id; /** * @ORM\JoinColumn(name="published_id", referencedColumnName="id", nullable=false, unique=true) * @ORM\OneToOne(targetEntity="AppBundle\Entity\Publisher", inversedBy="book") * @var Publisher */ protected $publisher; }