按项目对 api 资源中的数据进行排序

Sort data in api resource by an item

我有这个数据库结构:

public function up()
    {
        Schema::create('skills', function (Blueprint $table) {
            $table->id();
            $table->string('name',50);
            $table->integer('level');
            $table->string('description',100);
            $table->string('rule',100)->default('main'); // main | other | lang
            $table->timestamps();
        });
    }

现在我想按 laravel api 资源

中的规则对这些数据进行排序

例如,当我调用 api 路由时 应该 return 这个 :


data{

main [
   0 => {
       'name' : 'name',
       'level' : 'level',
       'description' : 'description',
    }
],
other [
   0 => {
       'name' : 'name',
       'level' : 'level',
       'description' : 'description',
    }
],
lang [
   0 => {
       'name' : 'name',
       'level' : 'level',
       'description' : 'description',
    }
],

}

那我应该怎么处理呢

我的数据库结构好吗?

ResourceCollection 比资源更好?

谢谢

您应该为 rule 字段添加索引以获得更好的查询性能。 https://laravel.com/docs/8.x/migrations#indexes

我认为您需要使用 QueryBuilder 的 orderBy 方法来处理它。 https://laravel.com/docs/8.x/queries#ordering