我有一个名为lobby的页面,用户可以在其中接受好友请求。接受好友请求会导致此操作:
public function acceptFriendRequestAction($requestId)
{
$user = $this->getUser();
// Here $user is modified and changes are saved in database
return $this->redirect('ACAppBundle:Lobby:index');
}
使用app.user呈现模板以显示朋友和请求。 但是,不考虑数据库中的更改。用户对象与acceptFriendRequestAction之前的用户对象相同。刷新页面时,app.user将与数据库同步。
为什么我需要刷新页面以查看数据库中的更改? 如何将app.user设置为更新用户?
当我使用转发代替重定向时,它可以正常运行,但我不想使用它,因为转发不会更改网址。
我还注意到有时会使用名为Proxies /.../ User的类而不是User。这可能与我的问题有关吗? 谢谢你的帮助,我已经坚持了好几天......
答案 0 :(得分:1)
您需要为$ request字段
的友谊类中的关系添加级联选项答案 1 :(得分:0)
删除友情请求时,您不会更新实际关系。当您执行removeElement
时,您只需将其移至内存中,直到将sender
或receiver
设置为空。
你可以手动完成这个......
$user->removePendingRequest($request);
$request->setSender(null);
// or $request->setReceiver(null);
或者您可以将其添加到添加/删除中以自动执行,如..
public function removeFriendship(FriendshipInterface $friendship)
{
if ($this->friendships->contains($friendships)) {
$this->friendships->removeElement($friendships);
$friendship->setSender(null);
// or $friendship->setReceiver(null);
}
}
答案 2 :(得分:0)
所以我似乎找到了解决方案:
我换了:
return $this->redirect('ACAppBundle:Lobby:index');
与
return $this->redirect($this->generateUrl('ac_app_lobby'));
现在重定向后,无需重新加载页面即可显示新朋友。
我不明白两条线之间的区别。有人可以解释一下吗?