我在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);
}*/
}
我认为在第一次 "查找 "后,将实体添加到工作单元中,第二次 "查找 "不调用数据库,而只使用工作单元来获取已经加载的实体!我认为这是个很好的方法。
使用profiler来验证SQL学说的调用。