2015-02-10 63 views
0

我想了解Symfony2,但有些東西對我來說沒有意義。我倒過來設計了一個現有的數據庫來生成我的實體,所以也許這就是問題所在。Symfony2和Doctrine - ManyToOne

我有一個名爲availability_alert的表,沒什麼特別的,幾個字段包括一個id(這是主鍵)。這張表沒有其他任何鏈接。

然後我有第二個表叫做booking_class,再次沒什麼特別的,但它確實有$ availabilityAlert字段,它鏈接到availability_alerts表id。

實質上,可用性警報可以具有一個或多個預訂等級。

現在在我的預訂類實體,我有鏈接

/** 
* @var \AlertBundle\Entity\AvailabilityAlert 
* 
* @ORM\ManyToOne(targetEntity="AlertBundle\Entity\AvailabilityAlert") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="availability_alert_id", referencedColumnName="id") 
* }) 
*/ 
private $availabilityAlert; 

所以這一切看起來OK。它的制定者雖然出來了,像這樣

public function setAvailabilityAlert(\AlertBundle\Entity\AvailabilityAlert $availabilityAlert = null) 
{ 
    $this->availabilityAlert = $availabilityAlert; 

    return $this; 
} 

所以,似乎採取A​​vailabilityAlert對象作爲參數,而不是AvailabilityAlert ID?

因此,與上述,我假設在我的控制器做這樣的事情不會工作?

$alert = new AvailabilityAlert(); 

$bookingClass = new BookingClass(); 
$bookingClass->setAvailabilityAlert($alert->getId()); 

有人可以給我一些建議,說明這裏的事情是否正確,或者如果我應該做別的事情?基本上,AvailabilityAlert應該是一個靜態表,其他錶鏈接到這個表。

任何意見讚賞。

謝謝

+0

也許閱讀說明書:http://symfony.com/doc/current/book/doctrine.html? Doctrine 2是一個對象關係管理器。你需要花一些時間瞭解它的功能。另外,您應該回答問題,而不是僅僅提出新問題。更好的機會讓人來幫助你。 – Cerad 2015-02-10 23:28:54

回答

0

這是正確的。你不使用整數,字符串。這是因爲這些關係是在實體註釋中給出的,而Doctrine使用它們來找出恰恰用來引用另一個對象的東西。這甚至可以讓你改變對象的引用方式 - 例如,你可以將ID更改爲AvailabilityAlert類中的複合主鍵,除了註釋之外,你的代碼不會有太大的變化。