【发布时间】:2021-09-18 14:20:49
【问题描述】:
我目前正在开发一个由 PostgreSQL 数据库支持的 Laravel 8 应用程序,其中我正在为各种不同的项目生成一个Cost 模型。我的意图是每天最多记录一个Cost->value,每个item;但是,由于重叠作业的一些问题以及我使用 updateOrCreate() 方法的方式,我最终每天为每个项目创建多个 Cost 记录。
我已经修复了逻辑,因此我不再每天获得多条记录,但我现在想回去清理所有重复的记录。
有没有一种有效的方法可以删除每项的所有重复记录,每天保留最新的记录,即:每项不超过一条记录, 每天?虽然我确信这看起来很简单,但我似乎无法直接在 SQL 中或通过 Laravel 和 PHP 找到正确的逻辑。
可能相关信息:目前,表中有约 50k 条记录。
示例表
// Example database table migration
Schema::create('costs', function (Blueprint $table) {
$table->id();
$table->string('item');
$table->decimal('value');
$table->date('created_at');
$table->timestamp('updated_at');
});
粗略示例(之前)
id,item,value,created_at,updated_at
510,item1,12,2021-07-02,2021-07-02 16:45:17 126.5010838402907751
500,item1,13,2021-07-02,2021-07-02 16:45:05 126.5010838402907751
490,item1,13,2021-07-02,2021-07-02 16:45:01 126.5010838402907751
480,item2,12,2021-07-02,2021-07-02 16:44:59 126.5010838402907751
470,item2,14,2021-07-02,2021-07-02 16:44:55 126.5010838402907751
460,item2,12,2021-07-02,2021-07-02 16:44:54 126.5010838402907751
450,item2,11,2021-07-02,2021-07-02 16:44:53 126.5010838402907751
粗略示例(期望的最终状态)
id,item,value,created_at,updated_at
510,item1,12,2021-07-02,2021-07-02 16:45:17 126.5010838402907751
480,item2,12,2021-07-02,2021-07-02 16:44:59 126.5010838402907751
【问题讨论】:
标签: laravel postgresql eloquent