可以在自定义存储库中使用实体getter吗?

时间:2014-08-19 15:49:36

标签: symfony repository entity

我需要抓取一个实体的几个字段,通过一些处理运行它们,然后返回处理过的数据。我想知道是否有可能调用在自定义存储库中构建自定义存储库的实体的getter?到目前为止,我想到的唯一方法似乎是通过调用实体的存储库来创建一个无限循环,其中包括对正在使用的自定义存储库的调用。

我可以编写实际的查询,但我认为通过现有方法访问数据会更清晰,为什么不呢?


更新:所以我在自定义存储库中构建了一个方法,我将实体对象传递给我想要使用的方法。似乎有点奇怪,我必须将实体传递给它自己的自定义存储库,以便它知道要采取什么行动,但我似乎无法找到任何其他方式。所以在我的Controller中,我现在调用实体,然后调用实体的存储库,并将先前调用的实体传递给存储库。是吗?

$user = $this->get('security.context')->getToken()->getUser();

$user_repository = $this->getDoctrine()->getRepository('AppBundle:User');

$profiles = $user_repository->getAllUsersProfiles($user);

1 个答案:

答案 0 :(得分:0)

事实证明,我对自定义存储库的整个概念不正确。我使用它们来存储可以提取与实体相关的数据的方法,但仅在实体被用于过滤其他内容的意义上相关。

在此顿悟之前,我的User Custom Repository有getAllUsersProfiles($ user)和getAllUsersCampaigns($ user)等方法。我之前的错误理解是,因为用户实体是过滤“个人档案”和“广告系列”的核心,所以这些属于用户自定义存储库。

我现在要了解的是,getAllUserProfiles($ user)属于Profiles Custom Repository,更适合命名为getAllByUser($ user)。现在,当我需要使用它时,我调出Profiles Repository并调用适当的方法:

$profile_repository  = $this->getDoctrine()->getRepository('AppBundle:Profile');
$all_profiles = $profile_repository->getAllByUser($user);