Symfony 4.2 doctrine
OneToMany の取得方法
Entity
Person Class
/**
* @ORM\OneToMany(targetEntity="App\Entity\Message", mappedBy="person")
*/
private $messages;
Message Class
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Person", inversedBy="messages")
*/
private $person;
Template
<h2>Person Table</h2>
<table>
<tr>
<th>id</th>
<th>name</th>
<th>mail</th>
<th>age</th>
<th>messages</th>
</tr>
{% for person in data %}
<tr>
<td>{{ person.id }}</td>
<td>{{ person.name }}</td>
<td>{{ person.mail }}</td>
<td>{{ person.age }}</td>
<td>
<ul>
{% for msg in person.messages %}
<li>{{ msg.content }}</li>
{% endfor %}
</ul>
</td>
</tr>
{% endfor %}
</table>
Case1. 都度データを取得する例
$repository = $this->getDoctrine()
->getRepository(\App\Entity\Person::class);
$data = $repository->findAll();
Case2. まとめてデータを取得する例
$repository = $this->getDoctrine()
->getRepository(\App\Entity\Person::class);
$data = $repository
->createQueryBuilder('p')
->select('p')
->addSelect('m')
->leftJoin('p.messages', 'm', Expr\Join::ON)
->getQuery()
->getResult();
Case3. フェッチモードを変える
/**
* @ORM\OneToMany(targetEntity="App\Entity\Message", mappedBy="person", fetch="EAGER")
*/
private $messages;
Author And Source
この問題について(Symfony 4.2 doctrine), 我々は、より多くの情報をここで見つけました https://qiita.com/applexco/items/b5700094d314788b6444著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .