注意:在我提出要求之前,我确实做了一些搜索。
这是我的问题:
我有两个实体:一个是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")
插件实体中的这种语音,或者它不会生成两个表之间的关系,这就是我问题的原因。
答案 0 :(得分:2)
你需要告诉学说这些是实体。
/**
* @ORM\Entity()
*/
class Channel
{
以下是验证学说可以看到您的实体的快速方法:
php app/console doctrine:mapping:info
答案 1 :(得分:2)
我会在这里重复一遍。 请勿添加
@ORM\Column(name="channel_id", type="integer")
引用其他实体的属性上的这种类型的annonation,在我的例子中,是Plugin实体的channel属性,或者它不会生成两个表之间的关系,这是我问题的原因。