代码之家  ›  专栏  ›  技术社区  ›  Roman Newaza

以更好的方式添加相关实体

  •  0
  • Roman Newaza  · 技术社区  · 6 年前

    如何实现添加相关 Role 实体更好的方式?如果可能的话,最好将它保存在表单中,或者如果我向 User

    public function add(Request $request)
    {
        $data = $request->request->all();
        $user = new User();
        $form = $this->createForm(UserType::class, $user);
        $form->submit($data);
        if (false === $form->isValid()) {
            return $form;
        }
        $user = $form->getData();
        // Adding a Roles
        if (!empty($data['user_roles'])) {
            foreach ($data['user_roles'] as $value) {
                // Checking if a Role is present in DB
                $role = $this->getDoctrine()
                    ->getRepository(Role::class)
                    ->findOneBy(['role_name' => $value]);
                if ($role) {
                    $user->setUserRole($role);
                }
            }
        }
        $this->em->persist($user);
        $this->em->flush();
    
        return new JsonResponse(
            [
                'status' => 'ok',
                'last_insert_id' => $user->getId(),
            ],
            JsonResponse::HTTP_CREATED
        );
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   J. Almandos    6 年前

    我一直这样工作,从来没有遇到过问题。实际上,我甚至不使用symfony的表单,因为它们没有那么灵活。最好的方法是你觉得更舒服的方法。只是要确保干净和一致。 当然,您可以向用户实体添加方法,但这只是模块化的问题,在这种情况下这不是很必要。