Symfony2允许FOS用户仅更新与其有关系的实体

时间:2013-08-07 08:54:54

标签: symfony doctrine crud fosuserbundle

我想限制我的用户帐户只能查看和修改与之有关系的实体。

我有一个基本的FOS用户设置,我有一个与我的用户实体有一对多关系的实体。

/**
 * @ORM\ManyToOne(targetEntity="User", inversedBy="blog")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
private $user_id;

架构正确验证,并且学说似乎对我的关系感到满意。

我使用 app / console generate:doctrine:crud 命令生成基本的crud系统。

如何限制退回与登录用户没有关系的实体的原则?

这是我目前用来获取所有实体的代码。

$entities = $em->getRepository('ExampleBundle:Blog')->findAll();

是否有用于按用户ID获取的预构建命令,还是需要编写一些DQL?

1 个答案:

答案 0 :(得分:1)

您可以将findBy方法与当前登录用户一起使用。

$user = $this->get('security.context')->getToken()->getUser();
$entities = $em->getRepository('ExampleBundle:Blog')->findBy(array('user' => $user));

在您的Blog实体中,它不是user_id而是user,您希望得到的用户不是ID。 $blog->getUser();

希望它有用。

最好的关注。