【发布时间】:2014-08-14 15:03:56
【问题描述】:
我有一个现有的应用程序,在 cmets 和视频/图像表之间设置了多态关系(视频和图像可以有很多 cmets):
视频表
- id
- title
图片表
- id
- url
cmets 表
- id
- parent_id (video or image primary key)
- parent_type (video or image)
现在我的客户已请求向应用添加活动源。 Feed 必须拉入所有新添加的视频和图像,并按其 cmets 的排名排序。
我添加了一个活动表
活动表(新)
-id
-parent_id (video or image primary key)
-parent_type (video or image)
-rank
-metadata
元数据列包含一些用于显示提要的非规范化数据,因此我不必拉入每个视频或图像。
注意:以上是我的应用程序的简化版本。实际上,我拥有的不仅仅是视频/图像类型。
我将如何设置 Eloquent 以使用尽可能少的查询获取所有相关 cmets 的所有活动?我真的很想阻止在 foreachloop 中进行查询。
活动表的其他数据库方案是可能的。
【问题讨论】:
-
此提要需要什么结果?
-
什么意思?我想用他们的 cmets 获取 X 数量的活动
-
我的意思是,你真的需要 Eloquent 结果吗?
-
是的,我想使用我的演示者/repo/命令等
-
@PinkFloyd 如果您还没有解决问题,请查看polymorphic relations;如果你使用得当,你可以通过这种方式获取 cmets
Activities::with('parent.comments')。