Doctrine удалить нужно дважды для работы - PullRequest
0 голосов
/ 05 мая 2020

У меня странное поведение при удалении doctrine, и я не понимаю, почему. it'an ajax действие удаления внутри контроллера symfony 5.

Если я запускаю реквет один раз = ничего не добавляется Если я запускаю реквет дважды, операция удаления происходит правильно.

Почему?

спасибо за вашу помощь

   /**
 * @Route("/permissions_ajaxDelete", name="permissions_ajaxDelete")
 */   
public function ajaxDelete(Request $request)
{

    $responseArray = array();
    $statusCode = 200;

    //if ($request->isXmlHttpRequest()) {

        $id = $request->get('id');
        $permission = $this->getDoctrine()->getRepository(Permissions::class)->find($id);

        //test si la permission existe
        if ($permission != null) {
            $responseArray["successMessage"] = "La permission \"".$permission->getName()."\" d'id ".$permission->getId()." a  été supprimée!";

            $this->getDoctrine()->getManager()->remove($permission);
            $this->getDoctrine()->getManager()->flush();

            $permission = $this->getDoctrine()->getRepository(Permissions::class)->find($id);
            if ($permission != null) {
                dd($permission);
                $responseArray["successMessage"] = "bugg";

// При первом вызове разрешение находит после сброса / удаления}

        }else{
            $responseArray["errorMessage"] = "Vous essayez de supprimer une permissions qui n'existe pas.";
            $statusCode = 403;
        }


        return new JsonResponse($responseArray,$statusCode);

    /*}else{
        //Requete non ajax.
        $responseArray["errorMessage"] = "Erreur : Mauvais format de requette (Ajax)";

        return new JsonResponse($responseArray,400);
    }*/


}

1 Ответ

0 голосов
/ 05 мая 2020

Я думаю, что после первого «find» doctrine добавить объект в единицу работы Второй «find» не вызывает базу данных, а использует только единицу работы, чтобы объект уже был загружен!

Использование профилировщика чтобы проверить, что SQL doctrine звонить.

...