Laravel 搜索和过滤

Laravel Search and Filter

这 url 在我使用日期(两者之间)过滤数据之后 http://127.0.0.1:8000/viewMonth/filter?_token=9jmqgiLCKNTMKtwObhlVQXCR6Vj1zcrDwsdXDDbm&dateFrom=2022-01-17&dateTo=2022-01-17

现在我正在创建一个名为 SearchData 的新函数,如果我想显示过滤日期的 SearchData,我应该怎么做 http://127.0.0.1:8000/viewMonth/filter?_token=9jmqgiLCKNTMKtwObhlVQXCR6Vj1zcrDwsdXDDbm&dateFrom=2022-01-17&dateTo=2022-01-17/{SearchData}

这是我的路线

Route::get('/viewMonth/filter/search', 'App\Http\Controllers\InvoiceController@SearchReportMonth')->name('SearchReportMonth');
Route::get('/viewMonth/filter', 'App\Http\Controllers\InvoiceController@filterDateMonth')->name('filterDateMonth');

我建议只 return 使用新的过滤数据编辑页面(除非你需要它更复杂,比如来自 JS 的 HTTP 请求,我假设你知道如何处理的内容)

一个这样的例子:

Only an example of how its done, implementations vary depending on needs

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $query = User::query();

        if (request('search')) {
            $query
                ->where('name', 'like', '%' . request('search') . '%')
                ->orWhere('email', 'like', '%' . request('search') . '%')
                ->orWhere('id', 'like', '%' . request('search') . '%');
        }

        if ($request->has(['field', 'sortOrder']) && $request->field != null) {
            $query->orderBy(request('field'), request('sortOrder'));
        }

        // Ignore my InertiaJS implementation, will work the same with base Blade Files.
        return Inertia::render('Users/Index', [
            'users' => fn() => $query->paginate(10)->withQueryString(),
        ]);
    }

基本上我使用 request() 来获取查询参数,然后从那里构建我的数据库查询和 return 它找到的数据。希望这对您有所帮助,请务必询问您是否需要更多了解或有疑问!