我正在使用Doctrine进行我的第一个项目,我偶然发现了这一点。
我有一个实体User,它是一个映射的超类。
/**
* @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;
}
我使用作者实体创建一个对象实体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;
}
我的发布商实体如下:
/**
* @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;
}
答案 0 :(得分:2)