注意:在提问之前我确实做了一些搜索。
这是我的问题:
我有两个实体:一个是Channel,另一个是Plugin,一个Channel可以有很多插件,下面是代码,
channel :
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")
插件实体中的这种注释,否则它不会生成两个表之间的关系,这就是我的问题的原因。
最佳答案
你需要告诉 Doctrine 这些是实体。
/**
* @ORM\Entity()
*/
class Channel
{
这是验证该 Doctrine 可以看到您的实体的快速方法:
php app/console doctrine:mapping:info
关于 Doctrine 无法产生关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469579/