0
我遇到了一个我并不确定如何实现的问题。我正在尝试实现基于网络的录音机。目前我有3个实体用于这部分。 Book
Page
和Recording
包含具有2个主键的ManyToOne对象的实体
每一页映射到一本书,像这样:
class Page
{
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Book")
* @ORM\JoinColumn(name="bookID", referencedColumnName="id")
*/
protected $bookID;
/**
* @ORM\Id
* @ORM\Column(name="pageNumber", type="integer")
*/
protected $pageNumber;
什么我卡上是每个页面可以有多个录音,我不知道,如果每个记录需要也映射到一本书,因为每个页面已经映射到一本书。
class Recording
{
/**
* @ORM\Id
* @ORM\Column(name="recordingID",type="integer")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $recordingID;
/**
* @ORM\ManyToOne(targetEntity="Page")
* @ORM\JoinColumn(name="pageID", referencedColumnName="pageNumber")
*/
protected $pageID;
但它将如何存储在数据库中?只是好奇,因为在页表中,BookID和PageNumber是主键。 – ChaoticLoki
问题在于现在,我的页面表可以是这样的,pagenumber 1,book id 12,pagenumber 1,book id 15. – ChaoticLoki
啊我现在明白了,最简单的(也是我认为更好的)解决方案是通过使pagenumber不是页面实体的主键,而是使用无意义的标识符并为page_number创建单独的受保护变量。我更新了数据库方案。 – Pankrates