php - 我想制作一个搜索表单,我可以在其中专门搜索与 Symfony 5 上的另一个实体具有空关系的实体
问题描述
我正在编写一个 symfony 应用程序,其中某个实体(比方说汽车)与另一个实体(比方说油漆颜色)有关系,但这种关系也可以为空(一辆没有任何颜色记录的汽车)。
我想制作一个表格来在我的数据库中搜索汽车,您可以:
- 搜索具有特定颜色的汽车(例如黄色)
- 搜索没有任何颜色记录的汽车
- 不在该字段中搜索任何内容(例如,我不关心汽车的颜色,我只想搜索汽车的门数量)
我可以轻松完成 1 和 3,但 2 更难。
我能做的最好的事情是从数据库中加载所有颜色,破解一个未持久的颜色实体(它会有一个空 id)并将它放在一个选择类型中。
然而,这从来没有感觉“干净”,我现在对此有疑问。
到目前为止,这是我的表格:
class Search extends AbstractType
{
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
private function getColorRepository(): ColorRepository
{
return $this->entityManager->getRepository(Color::class);
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$colors = $this->getColorRepository->findAll();
$unidentifiedColor = new Color();
$unidentifiedColor->setName("Not identified");
array_unshift($colors, $unidentifiedColor);
$builder
->add('color', ChoiceType::class, [
'choice_label' => 'name',
'multiple' => false,
'expanded' => false,
'required' => false,
'choices' => $colors,
'placeholder' => 'Select a color ...',
]);
}
}
这符合我的预期(默认选择是占位符,第二选择是“未识别”,其余的是您可以选择的颜色)。但是我现在需要使用EntityType,我不能再这样做了。
有人遇到过这个问题吗?你会如何解决这个问题?
解决方案
推荐阅读
- python - 小python计算器错误
- java - 如何在android中使视图模糊
- javascript - 使用 Redux 更改 React 组件内部的状态
- javascript - 在 Svelte 中捕获滚动元素而不是窗口
- c++ - c ++:指向指针的变量,意外的分段错误
- python - ValueError:未能找到可以处理输入的数据适配器:
, - python - 无法使用 $python file.py 运行 python 脚本
- c++ - OpenCV findEssentialMat和recoverPose,左右相机矩阵不同
- sparql - Sparql 查询将浮点数舍入到小数点后第三位
- sql - BigQuery LAST_VALUE 有条件