2016-11-22 18 views
0

私のデータベースには、UserテーブルとJob Titleテーブルがあります。Symfony 3 - ManyToOneとOneToManyを使用してデータを取得する

私はUserエンティティとJobTitleエンティティを設定しました。私は私のJobTitleエンティティで

/** 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\JobTitle", inversedBy="users") 
* @ORM\JoinColumn(name="job_title_id", referencedColumnName="id") 
*/ 
public $jobTitle; 

::私は私のUserエンティティで

ここ

/** 
* @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}}を使用しようとしていたが、私は理にかなっている文字列のエラーへの変換を取得しますが、私は考えていませんどのように実際の職名を取得して小枝ページに表示するか。

詳細が必要な場合はお知らせください。

usersテーブルのjob_title_idを使用してジョブタイトル名を取得するにはどうすればよいですか?

答えて

1

あなたはすべてのエンティティを表示していないので、上記の内容に基づいて「推測」する必要があります。

このように表示されます。{{ user.jobTitle }}は、あなたにJobTitleオブジェクトを返します。ダンプをすることで確認できます。

それはオブジェクトなので、私はあなたがこのような何かをする必要があります疑う:

{{ user.jobTitle.job_title }} 

または可能性JobTitleのオブジェクトメソッド(彼らが何であるかを知らない)を使用します。

{{ user.jobTitle.getJobTitle }} 

またはそのようなもの。やってみて。

+0

大きな頭痛から私を救っただけです。 '{{user.jobTitle.jobTitle}}'私はここでより良い名前を付けるべきだったが、うまくいった! – iamthestreets

+0

うまくいけばうれしい! –

関連する問題