2015-06-26 4 views
1

У меня есть небольшая проблема с ManyToMany сеттеров и добытчикамиSymfony, ManyToMany сеттеров и добытчиками в контроллере

Company.php

/** 
* @ORM\ManyToMany(targetEntity="User", mappedBy="companies") 
*/ 
protected $employees; 

User.php

/** 
    * @ORM\ManyToMany(targetEntity="Company", inversedBy="employees") 
    * @ORM\JoinColumn(name="company_id") 
    */ 
protected $companies; 

затем в контроллере я стараюсь установить потребительская ценность в компании

$company->setEmployees($company->getEmployees($user)); 

я получаю

"Пытались вызвать неопределенный метод под названием "setEmployees" класса .. \ Entity \ Компания". Вы хотели позвонить? «addEmployees» или «getEmployees»?

Может кто-нибудь помочь мне? Благодаря!

+0

Вы задали методы «public function getEmployees ...» и «public function setEmployees ..» в классе пользователя? – Bob

+0

Просто укажите, что эта операция кажется бесполезной, потому что вы установили в свою компанию пользователей, которых у нее уже есть ... –

+0

Вы ** добавляете ** сотрудника к множеству сотрудников, принадлежащих компании, поэтому вы должны использовать ' addEmployee' (или 'addEmployees' в вашем случае) вместо установки сотрудника. – qooplmao

ответ

0

Это связано с вашим отношением ManyToMany между двумя вашими сущностями. По умолчанию установщики getters & станут setEmployee() (единственное, потому что оно используется для добавления одного объекта Employee) и addEmployees() (множественное число, поскольку оно используется для добавления массива сотрудников). Проверьте, правильно ли написано все и соблюдает ли этот принцип.

Учитывая, что $user, кажется, уникальный пользователь, я хотел бы сделать следующие изменения:

$company->setEmployee($company->getEmployees($user)); 

Надеется, что это помогает.

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