2015-09-16 79 views
-2

一开始为我可怜的英语感到遗憾,我希望你能理解我。我在Symfony2中编写了一个简单的门户网站,并且需要使用MySQL与表之间建立关系,所有浏览互联网的方式都经过了测试,而且没有任何东西出现。下表。Symfony2的关系 - OneToOne?

http://i.stack.imgur.com/vR77x.png

http://i.stack.imgur.com/GDXDw.png

现在是,通过获得来自数据库的用户,我想一旦拉长到专业(职业),但它的名字联系在一起,甚至是一种选择?

+1

[Symfony一对一关系]的可能重复(http://stackoverflow.com/questions/11190308/symfony-one-to-one-relation) – RiggsFolly

回答

0

如果我理解正确,您希望在您的实体之间创建OneToOne关系?

在播放机实体:

/** 
* Player 
* 
* @ORM\Table(name="players") 
* @ORM\Entity() 
*/ 
class Player 
{ 
    /** 
    * @ORM\OneToOne(targetEntity="Vocation", inversedBy="player") 
    * @ORM\JoinColumn(name="vocation", referencedColumnName="id") 
    */ 
    private $vocation; 

    ... 
} 

,并在职业一个

/** 
* Vocation 
* 
* @ORM\Table(name="vocations") 
* @ORM\Entity() 
*/ 
class Vocation 
{ 
    /** 
    * @ORM\OneToOne(targetEntity="Player", mappedBy="vocation") 
    */ 
    private $player; 

    /** 
    * @var string 
    */ 
    private $vocationName; 

    /** 
    * @var integer 
    */ 
    private $id; 

    ... 
} 

像这样的事情?

另外(从看你的桌子)也许你可能想要一个ManyToOne关系,而不是OneToOne?

+0

仍然不起作用,我不知道是什么我做错了,代码如下 http://wklej.org/id/1797836/ http://wklej.org/id/1797837/ – Danon

+0

你正在使用'inversedBy =“player”'但你的“ DanonaccVocations“实体不包含该属性。 另外,将'@ORM \ Entity()'注释添加到实体中并不会造成伤害。 – Restless

+0

将'inversedBy =“player”'更改为'inversedBy =“vocationName”',添加了@ORM \ Entity()'注释并且没有任何东西,我测试它以便http://wklej.org/id/1797866/并获取' int 2'作为回答。 – Danon