Mysql sql to Elounce-嵌套选择以应用分组依据
我想用雄辩的语言进行以下查询Mysql sql to Elounce-嵌套选择以应用分组依据,mysql,eloquent,nested-queries,Mysql,Eloquent,Nested Queries,我想用雄辩的语言进行以下查询 SELECT * FROM ( select `id`, `category`, `name`, `slug`, `value`, `value_validation`, `value_type`, `created_at` from `configurations` order by `creat
SELECT * FROM (
select
`id`,
`category`,
`name`,
`slug`,
`value`,
`value_validation`,
`value_type`,
`created_at`
from
`configurations`
order by `created_at` desc
) as `a` GROUP BY a.slug;
基本上,我需要在数据库中存储所有配置的历史记录。因此不会使用更新的_at字段,而是在每次更新配置时创建新行。然后将不再使用旧配置,并始终应用最新配置
slug不是唯一的。但我的目的是让小组成员发表声明,以确保我得到一个独特的弹头
我希望能够利用Eloquent的所有优点——因此,我理想上想要一个Eloquent对象,而不是查询生成器对象
这是我到目前为止得到的,它生成了内部查询。现在我需要做的就是修改它以应用外部查询
$configurations = $this->configuration
->orderBy('created_at', 'DESC')
->get();
预期的结果是什么?您正在选择所有列,但仅按slug分组,不能保证您将获得最新的行,结果将是undetermined@fthiella-预期的结果是,我有一个雄辩的查询,可以执行上面解释的确切sql查询。保证是我首先在desc创建了_,这意味着我的结果顺序正确。当我在外部查询中应用group by时,我将始终获得组中的第一个项目-确保我有最新的结果。因此,当我在创建时订购,然后应用组时,我总是会得到最新版本。问题是此功能没有文档记录,而且被认为是不好的做法,无法保证您将获得组中的第一项,优化器可能会选择返回不同的行,而不总是返回第一项