错误在 symfony 3 上检测到循环引用
Error A circular reference has been detected on symfony 3
我执行以下步骤:
1.) 我调用我的 api 端点:http://localhost:8000/api/addrole
2.) 这个控制器叫做:
/**
* @Rest\Post("/addrole")
*/
public function addRoleAction(Request $request)
{
$userid = $request->get('userid');
$assignedRole = $request->get('role');
$assignedRoleName = $request->get('role_name');
// Obtain the User
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('AppBundle:User')
->find($userid);
// If the user gives not exists, throw error
if (!$user) {
throw new HttpException (400,"No se ha encontrado el usuario solicitado: " .$userid);
}
// obtain present user roles
$presentRoles = $user->getRoles();
$role_length = count($presentRoles);
$role_list = array();
for ($i=0; $i <$role_length ; $i++) {
array_push($role_list,$presentRoles[$i]->getRole());
}
if(!in_array($assignedRole,$role_list)){
$role = $em->getRepository('AppBundle:Role')
->findOneBy(array('role' => $assignedRole));
$user->addRole($role);
$em->persist($user); // persisting only the user.
$em->flush();
$data = array(
'result' => 'Rol asignado',
'user' => $user,
'assignedRole' => $assignedRole
);
return $data;
} else {
throw new HttpException (400,"El usuario ya posee el rol solicitado");
}
}
3.) 这一步的数据:
$user->addRole($role);
$em->persist($user); // persisting only the user.
$em->flush();
正在将数据保存在数据库中。
4.) 这是回应:
{
"error": {
"code": 500,
"message": "Internal Server Error",
"exception": [
{
"message": "A circular reference has been detected (configured limit: 1).",
"class": "Symfony\Component\Serializer\Exception\CircularReferenceException",...
5.) 如果我评论这一行:
//$em->flush();
数据明明没有保存,但是没有报错
有什么线索吗?
终于找到错误了
问题出在这段代码上:
...
post $em->flush();
this: $data = array('result' => 'Rol asignado', 'user' => $user, 'assignedRole' => $assignedRole );
return $data;
刷新后我调用了 $user 对象。这会产生问题。
感谢大家。
我执行以下步骤:
1.) 我调用我的 api 端点:http://localhost:8000/api/addrole
2.) 这个控制器叫做:
/**
* @Rest\Post("/addrole")
*/
public function addRoleAction(Request $request)
{
$userid = $request->get('userid');
$assignedRole = $request->get('role');
$assignedRoleName = $request->get('role_name');
// Obtain the User
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('AppBundle:User')
->find($userid);
// If the user gives not exists, throw error
if (!$user) {
throw new HttpException (400,"No se ha encontrado el usuario solicitado: " .$userid);
}
// obtain present user roles
$presentRoles = $user->getRoles();
$role_length = count($presentRoles);
$role_list = array();
for ($i=0; $i <$role_length ; $i++) {
array_push($role_list,$presentRoles[$i]->getRole());
}
if(!in_array($assignedRole,$role_list)){
$role = $em->getRepository('AppBundle:Role')
->findOneBy(array('role' => $assignedRole));
$user->addRole($role);
$em->persist($user); // persisting only the user.
$em->flush();
$data = array(
'result' => 'Rol asignado',
'user' => $user,
'assignedRole' => $assignedRole
);
return $data;
} else {
throw new HttpException (400,"El usuario ya posee el rol solicitado");
}
}
3.) 这一步的数据:
$user->addRole($role);
$em->persist($user); // persisting only the user.
$em->flush();
正在将数据保存在数据库中。
4.) 这是回应:
{
"error": {
"code": 500,
"message": "Internal Server Error",
"exception": [
{
"message": "A circular reference has been detected (configured limit: 1).",
"class": "Symfony\Component\Serializer\Exception\CircularReferenceException",...
5.) 如果我评论这一行:
//$em->flush();
数据明明没有保存,但是没有报错
有什么线索吗?
终于找到错误了
问题出在这段代码上:
...
post $em->flush();
this: $data = array('result' => 'Rol asignado', 'user' => $user, 'assignedRole' => $assignedRole );
return $data;
刷新后我调用了 $user 对象。这会产生问题。
感谢大家。