注意:在我問之前,我確實做了一些搜索。主義不能生成關係
這裏是我的問題:
我有兩個實體:一個是渠道,另一種是插件,一個通道可以有很多的插件,下面是代碼,
頻道:
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