如何使用whereIn Laravel查询构建器方法仅获取每个数组条件的最新/第一版本

时间:2019-05-02 23:23:41

标签: php mysql laravel laravel-query-builder

我的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);

可以使用查询生成器来做到这一点吗?

0 个答案:

没有答案