学说删除要做两次才行。

问题描述 投票:-1回答:1

我在doctrine remove的时候有一个奇怪的行为,我不明白为什么,这是一个symfony 5控制器内的ajax删除动作。

如果我启动了一次删除动作,就不会有任何附加动作;如果我启动了两次删除动作,删除动作就会正确发生。

为什么?

谢谢你的帮助

   /**
 * @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);
    }*/


}
symfony doctrine
1个回答
0
投票

我认为在第一次 "查找 "后,将实体添加到工作单元中,第二次 "查找 "不调用数据库,而只使用工作单元来获取已经加载的实体!我认为这是个很好的方法。

使用profiler来验证SQL学说的调用。

© www.soinside.com 2019 - 2024. All rights reserved.