注意:在我问之前,我确实做了一些搜索。主义不能生成关系
这里是我的问题:
我有两个实体:一个是渠道,另一种是插件,一个通道可以有很多的插件,下面是代码,
频道:
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")
这种annonation在插件实体,否则它不会产生两个表之间的关系,这是我的问题的原因。
您可以删除JoinColumn声明,它是无用的。是什么让你说关系从来没有创造?当你删除声明,更新模式,设置声明并运行'php app/console doctrine:schema:update --dump-sql'时会发生什么? – greg0ire 2012-02-27 19:07:51
谢谢,似乎我所有的代码都是正确的,并且现在可以在桌子之间产生关系。我会解决这个问题。是的,JoinColumn语句是不必要的。再次感谢。 – imikay 2012-02-28 02:27:11
而你只需要在拥有的一面指定关系,反面是没有必要的。 – imikay 2012-03-03 19:34:32