为 doctrine2 实体生成自定义代理方法



我有以下情况:

用户可以关注或被其他用户关注。

用户通过多对多关系相关联,如以下代码所示

/**
 @var ArrayCollection $follows
 @ORMManyToMany(targetEntity="User", inversedBy="followers")
 @ORMJoinTable(name="user_follows",
         joinColumns={@ORMJoinColumn(name="user_id", referencedColumnName="id")},
         inverseJoinColumns={@ORMJoinColumn(name="followed_user_id", referencedColumnName="id")}
     )
*/
protected $follows;
/**
 @var ArrayCollection $followers
 @ORMManyToMany(targetEntity="User", mappedBy="follows")
*/
protected $followers;

我想要一个名为 followersIDs(未持久保存到数据库)的集合字段,该字段将按需填充(调用 $user->getFollowersIDs() 时),仅使用关注当前用户的 ID(而不是整个实体)。

关键是用户可以被大量的其他用户关注,我认为当我只需要他们的 ID 进行一些快速检查时,加载所有用户实体是没有意义的。我想知道是否可以创建自定义代理方法来定义此自定义查询逻辑,或者是否存在其他解决方案。

谢谢建议。

不要碰 Doctrine 代理类,它们是在内部生成和使用。相反,着眼于为所需数据编写一些自定义 DQL 并将其放入存储库类中。

设置存储库类的一个很好的例子是:

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/working-with-objects.html#custom-repositories

最新更新