Symfony 3 - Использование ManyToOne и OneToMany и получение данных
У меня есть таблица пользователя и таблица названия должности в моей базе данных.
Я настроил сущность пользователя и сущность Job Title.
В моем пользовательском объекте у меня есть:
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\JobTitle", inversedBy="users")
* @ORM\JoinColumn(name="job_title_id", referencedColumnName="id")
*/
public $jobTitle;
В моей сущности Job Title у меня есть:
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\User", mappedBy="jobTitle")
*/
private $users;
Вот пример настройки в пользовательской таблице:
job_title_id | Username
1 | jdoe
Вот пример настройки в Таблице заголовков заданий:
id | job_title
1 | Owner
Когда я создаю пользователя, все вводится в базу данных, как и ожидалось.
Моя проблема заключается в отображении фактического названия должности на странице моего списка пользователей.
Вот мой контроллер:
/**
* @Route("/users", name="users")
*/
public function listAction()
{
$loggedInUser = $this->getUser();
$users = $this->get('fos_user.user_manager')->findUsers();
if (!is_object($user) || !$user instanceof UserInterface) {
throw new AccessDeniedException('This user does not have access to this section.');
}
return $this->render('users/users.html.twig', array(
'user' => $loggedInUser,
'users' => $users,
));
}
В своем шаблоне ветки я пытался использовать {{ user.jobTitle }}, но я получил преобразование в строковую ошибку, что имеет смысл, но я не представляю, как получить фактическое имя должности, чтобы отобразить его на странице ветки.
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Как я могу получить название должности, используя job_title_id в таблице пользователей?
1 ответ
Вы не показали все свои сущности, поэтому мне придется "угадать", основываясь на том, что я вижу выше.
Выглядит так: {{ user.jobTitle }}
возвращает вам объект JobTitle. Вы можете подтвердить, сделав дамп.
Поскольку это объект, я подозреваю, что вам нужно сделать что-то вроде этого:
{{ user.jobTitle.job_title }}
Или, возможно, использовать методы объекта JobTitle (не знаю, что они есть):
{{ user.jobTitle.getJobTitle }}
Или что-то типа того. Попробуйте это.