Laravel - Axios 请求中不存在方法 [orderBy]

Laravel - Method [orderBy] does not exist on Axois Request

我正在尝试从我的数据库中获取一些记录,但我得到了 Method [orderBy] does not exist 我正在使用 Axois 发出此请求。

路线

Route::get('/get-order-statuses', 'Backend\Orders\OrderStatuses@index');

控制器代码

public function index()
    {
        $statuses = OrderStatuses::orderBy('created_at', 'desc')
            ->get(['id', 'status', 'status_description']);

        return response()
            ->json([
                'statuses' => $statuses
            ]);
    }

模型代码

protected $table = 'order_statuses';
    protected $fillable = [
        'statues', 'status_description', 'userId',
    ];

Vue 模板

import { get } from '../../helpers/api'
        export default {
            data() {
                return {
                    isLoading: true,
                    loaded: false,
                    statuses: []
                }
            },
            created() {
                get('get-order-statuses')
                    .then((res) => {
                        console.log(res);
                        this.isLoading = false;
                        this.loaded = true;
                    })
            }

orderByQueryBuilder的一个方法,所以在使用它之前,你应该得到QueryBuilder的实例。

另外 get 不将字段作为参数。

考虑到上述问题,您的查询可以重写为:

$statuses = OrderStatuses::select('id', 'status', 'status_description')
    ->orderBy('created_at', 'desc')
    ->get();

或:

$statuses = DB::table('order_statuses')
    ->select('id', 'status', 'status_description')
    ->orderBy('created_at', 'desc')
    ->get();

还有

$statuses = OrderStatuses::all()
    ->select('id', 'status', 'status_description')
    ->orderBy('created_at', 'desc')
    ->get();