在Laravel中我有一个名为"垃圾"的简单模型,它的迁移如下所示:

Schema::create('garbages', function (Blueprint $table) {
    $table->id();
    $table->date('disposal_at');
    $table->timestamps();
});

在我的Laravel路由(web.php)中,路由如下所示:

Route::get('/garbage', function() {
    $garbages = \App\Models\Garbage::all()
        ->sortBy('disposal_at');

    // dd($garbage);

    return Inertia::render('Grabage', [
        'garbages' => $garbages
    ]);
});

如你所见,我只是得到我所有的垃圾记录,按‘disposal_at’对它们进行分类,然后将其传递给Inertia::render.

现在我想通过VUE显示列表中的所有记录,文件如下所示:

<script setup lang="ts">
    interface Garbage {
        id: number,
        disposal_at: string
    }

    const props = defineProps<{
        garbages: Garbage[]
    }>();
</script>

<template>
    <ul>
        <li v-for="garbage in garbages" :key="garbage.id">
            {{ garbage.disposal_at }}
        </li>
    </ul>
</template>

输出如下所示:

  • 2002-08-19
  • 2002-06-05
  • 1995-07-18
  • 1978-12-21
  • 1989-07-12
  • 1975-09-06
  • 2000-03-01
  • 2012-06-04
  • 2022-11-09
  • 2006-04-10

现在我的问题是,虽然我按"disposal_at"对集合进行了分类,但在传递给vue的Inertia::render()之后,它又再次按id分类了.

我已经在laravel路由中通过dd($garbage)显示了值,以查看它是否在那里排序,这给了我按"disposal_at"排序的集合,但在Vue中,它不再按"disposal_at"排序.

为什么会发生这种情况,我如何修复它?

推荐答案

要解决此问题,需要在排序后使用values()方法重置关键点:

$garbages = \App\Models\Garbage::all()
    ->sortBy('disposal_at')
    ->values();

当您序列化采集并发送到前端时,JS不保证订单.有了values(),你就能维持秩序.

Laravel相关问答推荐

Hostinger Laravel网站未显示错误

Laravel带S3存储器

如何在 Laravel 中获取特定月份的最后一个日期?

如何在自定义表单请求中获取错误验证数据

我如何通过 laravel 在高图中针对不同的时间范围进行烛台数据分组

Laravel 验证 - 不同的属性规范

Laravel 集合排序不生效

未捕获的 TypeError:Vue.component 不是函数

Laravel Eloquent:访问属性和动态表名

Laravel:每当我返回一个模型时,总是返回一个与它的关系

Laravel Eloquent Pluck 不丢失密钥

删除表后如何重新迁移laravel迁移

如何从 laravel 中的现有数据库创建迁移

Composer 致命错误:声明 Fxp... 必须与第 334 行的 ...AbstractAssetsRepository.php 兼容

Laravel 无法创建根目录

脚本 php artisan clear-compiled 处理 pre-update-cmd 事件返回错误(Laravel 4.1 升级)

在 Laravel 应用程序中在哪里指定应用程序版本?

Select,where JSON 包含数组

如何在 Eloquent Orm 中实现自引用(parent_id)模型

如何以 JSON 格式发送 Laravel 错误响应