2015-09-16 7 views
-2

Вначале жаль моего бедного английского, надеюсь, вы меня понимаете. Я пишу простой портал в Symfony2 и дошел до того, что ему нужно установить отношения между таблицами с MySQL, всеми способами просмотра в Интернете, проверить и ничего не вышло. Таблицы ниже.Symfony2 отношений - OneToOne?

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

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

Теперь да, получая пользователя из базы данных, я хотел бы еще раз потянулся к профессии (призванию), но вместе с его именем, даже вариант?

+1

Возможный дубликат [Symfony ONE-TO-ONE отношение] (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 "' to 'inversedBy =" vocationName "', добавлено '@ORM \ Entity()' аннотация и ничего, я проверяю его так http://wklej.org/id/1797866/ и получаю ' int 2' в ответе. – Danon