我的Laravel项目中有2个模型:用户模型和领域模型,它们之间具有多对多关系。
字段模型只有两列:数据段,数据和时间戳。 我想通过Slug获取具有某些字段的Users,但不是所有字段,而是数组中每个Slug的最新字段。
这是我想要做的:
此代码示例将从$ slugs数组中提取与User id:1
相关的所有字段,并获取slug
。
$slugs = ['first_name','last_name'];
User::with(['fields' => function($query) {
$query->whereIn('slug', $slugs);
}])->find(1);
但是每个用户可以有很多带有相同子段的字段-我们称其为字段版本。
因此,用户1实际上具有字段
[slug => first_name, data => John]
以及[slug => first_name, data => Mary]
。我只想从$slugs
数组中获取每个段的最新字段版本。
这是不正确的示例,但这就是在db中找到的第一个字段数据段仅返回最新版本的原因。
$slugs = ['first_name','last_name'];
User::with(['fields' => function($query) {
$query->whereIn('slug', $slugs)->latest()->first();
}])->find(1);
可以使用查询生成器来做到这一点吗?