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 }}

Или что-то типа того. Попробуйте это.

Другие вопросы по тегам