猿问

Laravel 7 中的 AJAX 分页(内部服务器错误)

我正在使用 Laravel 7,我想使用 ajax 进行分页,这样当我单击下一页时它不会刷新整个页面。我搜索以解决我的问题,但它不起作用,并且每当我在控制器中使用 error_log() 时它都不会转到 fetch()。每当我点击第 2 页时,它就会出错。在控制台中显示的错误是:


app.js:16437 GET http://127.0.0.1:8000/ledger/fetch?page=2 500 (Internal Server Error)

在 storage/logs/laravel.log


[previous exception] [object] (BadMethodCallException(code: 0): Method Illuminate\\Database\\Eloquent\\Collection::links does not exist. at C:\\xampp\\htdocs\\final_Financial\\fin_book_09\\vendor\\laravel\\framework\\src\\Illuminate\\Support\\Traits\\Macroable.php:103)

账本控制器.php


    public function index(Request $request)

    {

        $disableLedger = true;

        $ledger = Ledger::orderBy('id', 'DESC')

            ->where('user_id', auth()->user()->id)

            ->paginate(5);

        $ledgerCatType = DB::table('ledgers')

            ->orderBy('ledgers.id', 'DESC')

            ->join('categories', 'ledgers.cat_id', '=', 'categories.id')

            ->where('ledgers.user_id', auth()->user()->id)

            ->get('categories.type');

        $category = Category::where('user_id', auth()->user()->id)->get();

        return view('ledgers.index', [

            'ledgers' => $ledger,

            'categories' => $category,

            'disableLedger' => $disableLedger,

            'ledgerCatType' => $ledgerCatType

        ]);

    }

    function fetch(Request $request)

    {

        if ($request->ajax())

        {

            $ledger = Ledger::orderBy('id', 'DESC')

                ->where('user_id', auth()->user()->id)

                ->paginate(5);

            $ledgerCatType = DB::table('ledgers')

                ->orderBy('ledgers.id', 'DESC')

                ->join('categories', 'ledgers.cat_id', '=', 'categories.id')

                ->where('ledgers.user_id', auth()->user()->id)

                ->get('categories.type');

            $category = Category::where('user_id', auth()->user()->id)->get();

            return view('ledger.entries', compact('ledger', 'categories', 'ledgerCatType'))->render();

        }

    }

ITMISS
浏览 125回答 1
1回答

湖上湖

好吧没关系,我修好了。我只是想在这里发布答案,以防有人也被它困住。问题是我的路线,而不是使用resource我手动添加的路线:Route::get('ledger', 'LedgerController@index')->name('ledger.index')->middleware('auth');Route::post('/ledger', 'LedgerController@store')->name('ledger.store')->middleware('auth');Route::delete('/ledger/{id}', 'LedgerController@destroy')->name('ledger.destroy')->middleware('auth');Route::get('/ledger/fetch', 'LedgerController@index')->name('ledger.fetch')->middleware('auth');我还编辑了我的代码index(),因此将它与fetch()方法结合起来,因此它现在看起来像这样:    public function index(Request $request)    {        $disableLedger = true;        $ledgers = Ledger::orderBy('id', 'DESC')            ->where('user_id', auth()->user()->id)            ->paginate(10);        $ledgerCatType = DB::table('ledgers')            ->orderBy('ledgers.id', 'DESC')            ->join('categories', 'ledgers.cat_id', '=', 'categories.id')            ->where('ledgers.user_id', auth()->user()->id)            ->select('categories.type')            ->paginate(10);        $categories = Category::where('user_id', auth()->user()->id)->get();        if ($request->ajax())        {            return view('ledgers.entries', compact('ledgers', 'categories', 'ledgerCatType', 'disableLedger'))->render();        }        return view('ledgers.index',  compact('ledgers', 'categories', 'ledgerCatType', 'disableLedger'));    }
随时随地看视频慕课网APP
我要回答