学说不能产生关系

时间:2012-02-27 17:43:12

标签: doctrine symfony

注意:在我提出要求之前,我确实做了一些搜索。

这是我的问题:

我有两个实体:一个是Channel,另一个是Plugin,一个频道可以有很多插件,下面是代码,

频道:

use Gedmo\Mapping\Annotation as Gedmo; // gedmo annotations

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
 * Mikay\MikiBundle\Entity\Channel
 *
 * @ORM\Table(name="channels")
 * @ORM\Entity(repositoryClass="Mikay\MikiBundle\Entity\ChannelRepository")
 */
<?php
class Channel
{
  /**     
   * @ORM\OneToMany(targetEntity="Plugin", mappedBy="channel")
   */
  private $plugins;            

插件:

 use Doctrine\ORM\Mapping as ORM;

/**
 * Mikay\MikiBundle\Entity\Plugin
 *
 * @ORM\Table(name="plugins")
 * @ORM\Entity(repositoryClass="Mikay\MikiBundle\Entity\PluginRepository")
 */
<?php
class Plugin
{
  /**
   * @ORM\ManyToOne(targetEntity="Channel", inversedBy="plugins")
   * @ORM\JoinColumn(name="channel_id", referencedColumnName="id")
   */
  private $channel;

我使用此命令更新数据库,但它从未创建两个表之间的关系。

php app/console doctrine:schema:update --force

那么,问题是什么,可能是一些配置错误?

修改

注意: 不要添加

@ORM\Column(name="channel_id", type="integer")

插件实体中的这种语音,或者它不会生成两个表之间的关系,这就是我问题的原因。

2 个答案:

答案 0 :(得分:2)

你需要告诉学说这些是实体。

/**
 * @ORM\Entity()
 */
class Channel
{

以下是验证学说可以看到您的实体的快速方法:

php app/console doctrine:mapping:info

答案 1 :(得分:2)

我会在这里重复一遍。 请勿添加

@ORM\Column(name="channel_id", type="integer")

引用其他实体的属性上的这种类型的annonation,在我的例子中,是Plugin实体的channel属性,或者它不会生成两个表之间的关系,这是我问题的原因。