我遇到了一个我不确定如何实施的问题。我正在尝试实现基于Web的录音机。目前我有3个实体用于此部分。 Book
Page
和Recording
每个页面都映射到如此的书:
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;
答案 0 :(得分:1)
您无需将录制内容映射到相应的图书实体,因为它会从映射到页面实体继承此关系。如果您有一个录制实体并且您想要检索其图书实体,那么您将能够按照
的方式执行某些操作。$oRecording = $this->_em->find($recording_id);
$oBook = $oRecording->getPage()->getBook();
在数据库中,您应该获取页面表
id | page_number | book_id
----------------
1 | 3 | 12
2 | 4 | 15
在录音表中
id | PAGE_ID
----------------
1 | 2
2 | 2
因此,录制2的内容为page_id = 2,因此book_id为15.这样就不会在数据库中复制数据了。