2014-08-31 3 views
0

У меня есть 2 таблицы, как это:ManyToOne отношения + Как использовать в обоих направлениях

Users 
    - UserID 
    - Username 
    - Password 
    - ... 
Players 
    - playerID 
    - playerName 
    - ... 
    - User 

Отношение является ManyToOne (см рисунок) и это не требуется.

enter image description here

Я генерироваться мои объекты автоматически с доктриной. В моем игроке Entity у меня есть:

/** 
* @var \NV\VolleyScoutBundle\Entity\Users 
* 
* @ORM\ManyToOne(targetEntity="NV\VolleyScoutBundle\Entity\Users") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id") 
* }) 
*/ 
protected $user; 

Но я не имею $player переменные в моих пользователях Entity. Как я могу добавить это? Пытался сделать это, но дал мне разные ошибки. То, что я пытаюсь сделать, это добавить форму игрока в мою регистрационную форму.

So in my RegisterType (= form) Я хотел бы добавить ->add('player', new PlayerType()). Но это невозможно без переменной $ player в сущности My Users.

Какое отношение мне нужно установить для $ player в моем объекте Users?

ответ

1

Вы должны добавить аннотацию в пользовательскую сущность.

В игрока Enity

@ORM\OneToMany(targetEntity="Players", mappedBy="user") 
protected $player; 

В User Entity:

@ORM\ManyToOne(targetEntity="Users", inversedBy="player") 
@ORM\JoinColumn(name="user_id", referendecColumn="UserId") 
proteced $user; 

Это только проект. Вы должны написать полные пространства имен для целевых объектов и исправить ошибки, если они есть.

Много setails вы можете найти здесь: Doctrine documentation - working with association

Попробуйте использовать небольшие колпачки для имен таблиц, поскольку MySQL под Linux не нравится uppercaps. $ Игрок должен быть экземпляром ArrayCollection

+0

Спасибо! Но когда я делаю: $ user-> getPlayer(), я просто возвращаю объект (Doctrine \ ORM \ PersistentCollection) обратно. – nielsv

+0

Это должно быть нормально. Постоянная коллекция - это как массив с экземплярами Player. Попробуйте цикл foreach: $ players = $ user -> getPlayer(); foreach ($ players as $ player) ... здесь $ player должен быть экземпляром игрока. – Matzach

Смежные вопросы