【发布时间】:2015-08-03 18:09:59
【问题描述】:
我想知道这样做的最佳做法是什么:
我有: 一个实体Item, 一个实体用户, 和一个实体收藏夹(收藏夹由一个用户和一个项目组成,我对这两个字段有唯一的约束)
我想按页面列出 40 个项目,并显示每个项目是否在当前用户的收藏夹中。最好的方法是什么?我已经想到了一些解决方案。
解决方案 1 将一个名为 favorite 的整数属性添加到我的 Item 实体。获取当前页面的所有Item的id(IDS),并通过操作符IN(IDS)获取所有的Favorite。在最喜欢的循环中,我会将 Item 属性设置为 1 以表示“喜欢”,并将另一个设置为 null 以表示“不喜欢”。缺点,我不能通过只使用整数属性来使用 Favourite 的信息。
解决方案 2 将一个名为收藏夹的数组集合属性添加到我的 Item 实体中,该实体将位于 OneToMany 与收藏夹实体的关系上。因此,当我将列出项目时,我可以使用项目和收藏夹之间的 createQueryBuilder 方法重写连接(左连接),通过指定当前用户的收藏夹来仅获取一个或任何收藏夹。缺点,我重写了当前的收藏项列表,所以我不会得到所有的收藏,只会得到当前用户的收藏。
我不知道这样做的最佳做法是什么,我不必为每个项目进行查询,它太重了...如果您有更好的解决方案,对我的不同解决方案的评论,或者带有样品的捆绑包,我将不胜感激:)
【问题讨论】:
标签: entity-framework symfony doctrine-orm doctrine entity