我试图了解Symfony2,但有些东西对我来说没有意义。我反过来设计了一个现有的数据库来生成我的实体,所以也许就是这个问题。
我有一个名为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;
所以这一切看起来都不错。它的制定者虽然如此出现
public function setAvailabilityAlert(\AlertBundle\Entity\AvailabilityAlert $availabilityAlert = null)
{
$this->availabilityAlert = $availabilityAlert;
return $this;
}
那么似乎将AvailabilityAlert对象作为参数,而不是AvailabilityAlert id?
所以有了上述内容,我假设在我的控制器中做这样的事情是行不通的?
$alert = new AvailabilityAlert();
$bookingClass = new BookingClass();
$bookingClass->setAvailabilityAlert($alert->getId());
有人可以就这里的事情是否正确,或者我是否应该做其他事情给我一些建议?基本上,AvailabilityAlert应该是一个静态表,其他表链接到此。
任何建议表示赞赏。
由于
答案 0 :(得分:0)
是的,这是正确的。
在Doctrine世界中,当涉及实体之间的关系时,您正在处理对象,而不是整数或字符串。
您可以在此处阅读有关Doctrine 2关系的更多信息:http://symfony.com/doc/current/book/doctrine.html#entity-relationships-associations
答案 1 :(得分:0)
那是对的。你不使用整数,字符串。这是因为关系是在实体注释中给出的,而Doctrine使用它们来确定用于引用另一个对象的确切用途。这甚至可以让您更改对象引用自身的方式 - 例如,您将ID更改为AvailabilityAlert类中的复合主键,并且除了注释外,您的代码不会发生太大变化。