【问题标题】:Symfony2 entities best practiceSymfony2 实体最佳实践
【发布时间】: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


    【解决方案1】:

    不需要额外的捆绑包,我什至怀疑是否存在。这是一个非常简单的任务,在大多数社交网络中都可以轻松解决,其中有人可以发布(在您的情况下为“项目”)用户可以喜欢帖子(在您的情况下为“最喜欢的”)。

    创建一个收藏夹实体(表)的简单常用方法,该实体有两个重要的列,每个列都有一个多对一的映射。一个到 users 表,一个到 items 表,每个表都有一个一对多的映射。即许多用户可以收藏一个项目,许多项目可以被一个用户收藏或“收藏”。这个新实体包含所有这些数据,不用担心查询速度,根据我的经验,它会自动为相关表上的映射列创建索引。

    【讨论】:

      猜你喜欢
      • 2015-09-02
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      相关资源
      最近更新 更多