0

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

我有一个基本的 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?

4

1 回答 1

1

您可以findBy对当前登录的用户使用该方法。

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

在您的Blog实体中,它不是 auser_id而是 a user,您希望获取用户而不是 id。$blog->getUser();

希望它有帮助。

最良好的问候。

于 2013-08-07T09:24:26.810 回答