我有一个枚举(感谢 php 8.1),我想将其记录在数据库中。该字段的类型为Enum。通过Adminer进行SQL查询,没有问题。
UPDATE `users` SET `grade` = 1, WHERE `id` = '51';
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在 Adminer 中,我可以在成绩列中看到“A5”(值为 1 的枚举名称)
但是对于 Doctrine 和 symfony 形式,数据不会被持久化(仅在这个字段上)。我没有错误。
if ($form->isSubmitted() && $form->isValid()){
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($user);
$entityManager->flush();
Run Code Online (Sandbox Code Playgroud)
这是 ProfileType 中的“添加”
->add('grade', ChoiceType::class, [
'data' => $user ? $user->getGrade() : GradeEnum::D1,
'placeholder' => 'Choose an option',
'required' => false,
'choices' => [
GradeEnum::D1->name => GradeEnum::D1,
GradeEnum::D2->name => GradeEnum::D2,
GradeEnum::C1->name => GradeEnum::C1,
GradeEnum::C2->name => GradeEnum::C2,
GradeEnum::B1->name => GradeEnum::B1,
GradeEnum::B2->name => GradeEnum::B2,
GradeEnum::A1->name => GradeEnum::A1, …
Run Code Online (Sandbox Code Playgroud)