我想限制我的用户帐户只能查看和修改与之有关系的实体。
我有一个基本的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?
答案 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();
希望它有用。
最好的关注。