Laravel Controller/Modal 全部排序()

Laravel Controller/Modal order by in all()

正在尝试对我的 table 进行排序。数字是category_id而且不是按数字排序的(1和2在table的最下面),我要排序

控制器:

public function fetchcategory(){
    $all_categories = HmsBbrCategory::all();
    return response()->json([
        'all_categories'=>$all_categories,
    ]);
}

当我尝试下面的代码时,我的控制台出现 500 内部服务器错误:

$all_categories = HmsBbrCategory::orderBy('category_id', 'ASC')->all();

orderBy 代码我做错了什么?

仅供参考,了解all()get()

的区别

全部()

它是一个 static method,因此您无法执行 all() 方法中的其他 queries.Only 选项,您可以 select columns.

public static function all($columns = ['*'])
{
    return static::query()->get(
        is_array($columns) ? $columns : func_get_args()
    );
}

如果我们看到静态 all() 方法的实现。在内部它调用 get() method

1.all() 接受 columns as array。默认设置为 * ,表示选择所有列。

2.Inside那个方法,我们可以看到get()被调用了。所以在 get 之后我们不能调用任何查询操作所以它抛出错误

get() 是 Eloquent 生成器 \Illuminate\Database\Eloquent\Builder

只是你必须更新这一行

$all_categories = HmsBbrCategory::orderBy('category_id', 'ASC')->all();

进入

$all_categories = HmsBbrCategory::orderBy('category_id', 'ASC')->get();

然后你会得到你的结果。