Symfony2和条令-多通

Symfony2和条令-多通,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,我试图理解Symfony2,但有些东西对我来说没有意义。我反向设计了一个现有的数据库来生成我的实体,所以这可能就是问题所在 我有一个名为availability_alert的表,没有什么特别的,只有几个字段,包括一个作为主键的id。此表没有与其他任何内容的链接 然后我有了第二个名为booking_class的表,同样没有什么特别的,但是它有$availabilityAlert字段,该字段链接到availability_alerts tables id 本质上,可用性警报可以有一个或多个预订类别

我试图理解Symfony2,但有些东西对我来说没有意义。我反向设计了一个现有的数据库来生成我的实体,所以这可能就是问题所在

我有一个名为availability_alert的表,没有什么特别的,只有几个字段,包括一个作为主键的id。此表没有与其他任何内容的链接

然后我有了第二个名为booking_class的表,同样没有什么特别的,但是它有$availabilityAlert字段,该字段链接到availability_alerts tables 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应该是一个静态表,其他表链接到此表

谢谢你的建议

谢谢

是的,这是正确的

在条令世界中,当涉及实体之间的关系时,您使用的是对象,而不是整数或字符串


你可以在这里阅读更多关于条令2关系的内容:

没错。不能使用整数、字符串。这是因为关系是在实体注释中给出的,而条令使用它们来确定用于从一个对象引用另一个对象的确切内容。这甚至可以让您更改对象引用自身的方式—例如,您将id更改为AvailabilityAlert类中的复合主键,并且除了注释之外,您的代码不会有太大的更改。

请阅读手册:?条令2是一个对象关系管理器。您需要花一些时间了解它的功能。此外,你应该对答案做出回应,而不仅仅是提出新问题。有更好的机会让别人帮助你。