【发布时间】:2019-10-13 17:35:20
【问题描述】:
我有一个用于存储文档的数据库——有些是相互独立的,但有些只是之前文档的“下一个版本”。在这种情况下,我将最新版本的 id 存储在一个列中。
示例数据集如下所示:
id | name | version | validated | latest_version_id
1 | 'Doc 1' | 1 | true | null
2 | 'Doc 2' | 1 | true | null
3 | 'Doc 3 v1' | 1 | true | 5
4 | 'Doc 3 v2' | 2 | true | 5
5 | 'Doc 3 v3' | 3 | false | 5
我希望能够选择所有已验证 文档的最新 版本。通常是返回数据集中第 1、2 和 4 行的请求。
我希望能够像Docs::where('validated', true)->distinct('latest_version_id')->get() 这样的东西,但显然不是那么简单..
任何查询大师指出我正确的方向?一种解决方案是获取所有结果,然后过滤掉一些模型,但这听起来不是很优化。
【问题讨论】:
-
你可以试试这个包:github.com/lazychaser/laravel-nestedset。我认为它可以解决您的问题。
-
编辑问题并添加您想从数据集中获取的示例
标签: php mysql laravel laravel-5 eloquent