我有與用戶表中的多對多關係的實體:(使用選擇2)選擇Symfony的QueryBuilder的:太多的疑問
/**
* @ORM\ManyToMany(targetEntity="User")
* @ORM\JoinTable(
* name="offer_allowedusers",
* joinColumns={
* @ORM\JoinColumn(name="offer_id", referencedColumnName="id", onDelete="CASCADE")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
* }
*)
*/
private $allowedUsers;
而且,在形式,我想顯示一個下拉列表,其允許用戶:
爲了做到這一點,我做了,形式建設:
->add('allowedUsers', EntityType::class, [
'class' => 'AppBundle\Entity\User',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.username', 'ASC');
},
'label' => 'Allowed users',
'required' => false,
'multiple' => true
])
的問題是,它使每個用戶的查詢,來獲取用戶名。所以,如果我有500個用戶,這讓500個查詢...
如何優化和做一個單一的查詢來獲取所有的記錄?
您是否在User類中實現了__toString()方法?這個方法會返回我有的用戶名 – Mz1907
,返回'$ this-> username'。沒有它,它不會在下拉菜單中顯示用戶名 –
您是否嘗試在表單構建器選項數組中添加「'choice_label'=>'用戶名'? –