symfony - 使用 EntityType 获取其他实体中不存在的数据
问题描述
我想制作一个带有选择下拉列表的表单,其中包含来自用户实体的数据并且不在管理实体中使用
控制器
->add('User', EntityType::class, [
'class'=>Users::class,
'choice_label'=>function($users){
return $users->getUsername();
}
])
用户
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=50)
*/
private $Username;
/**
* @ORM\Column(type="string", length=30)
*/
private $Password;
/**
* @ORM\Column(type="string", length=150)
*/
private $Email;
/**
* @ORM\Column(type="boolean")
*/
private $isBlocked;
/**
* @ORM\OneToOne(targetEntity="App\Entity\UserDetails", cascade={"persist", "remove"})
*/
private $Details;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Offers", mappedBy="User")
*/
private $Offers;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $joinedAt;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $lastLogged;
行政
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Users", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $User;
/**
* @ORM\Column(type="boolean")
*/
private $isDisabled;
/**
* @ORM\Column(type="integer")
*/
private $rightsLevel;
我想避免添加具有多个权限的同一用户。我可以通过合并来阻止它,因此权限会改变,但我认为隐藏具有权限的用户是更好的选择。
有任何想法吗?
我知道我应该使用带有 EntityType query_builder 选项的左连接来执行此操作,但老实说,我真的不知道如何...
编辑 1
解决方案
您确实可以使用带有 EntityType 的查询构建器来选择用户并指定标签是用户名。
$builder->add('User', EntityType::class, [
'class' => Users::class,
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.username', 'ASC');
},
'choice_label' => 'username',
]);
推荐阅读
- python - 用重采样替换变量
- wordpress - WordPress REST API 中的 POST 方法
- android - 如何将来自其他开发者的应用程序的新版本发布到 Apple App Store 和 Google Play?
- windows - 是否使用 last modified 来确定文件是否可以传输?
- css - 将网站调整为移动设备时出现问题(Devtools 与真实)
- angular - 在inappbrowser上隐藏网页菜单
- python - 路线上的纸浆运输问题,而不是数量上的问题
- javascript - BufferGeometry 中各个顶点的不同大小
- cryptography - 使用 Palisade 库的同态加密
- unit-testing - 在没有实际数据库调用的情况下在具有 N 层的 Web api 中进行单元测试