rondigital/query-filter

在 Laravel 模型中进行过滤和搜索。

v1.5 2023-08-29 13:20 UTC

This package is not auto-updated.

Last update: 2024-09-30 21:56:55 UTC


README

在 Laravel 模型中进行过滤和搜索。

composer require rondigital/query-filter

QueryFilter 是一个用于在 Laravel 模型中进行过滤、多重过滤和搜索的 trait。您可以使用上述 composer 命令进行安装。要在您的类中使用它,请使用 "use" 关键字添加以下行

use Rondigital\QueryFilter\QueryFilter;

class YourClass {

use QueryFilter;
// ...
}

参数

  • startingDate : 必须是 Y-M-D H:i:s 格式
  • endingDate : 必须是 Y-M-D H:i:s 格式
  • filteredBy : 必须是;
    • today
    • last-24
    • last-7-day
    • last-30-day
    • last-60-day
    • last-90-day
    • last-year
    • this-month
    • last-month
    • this-week
    • last-week
  • search : 必须是搜索值
    • searchColumn : 必须是列名
  • orderBy : 必须是列名
  • orderType : 必须是 asc/desc

在您的函数内部,您可以如下使用它

$model = Model::all();
return $this->query($model, $request);

示例

 http://:8000/api/files?search=pdf&searchColumn=extension&filteredBy=today&orderType=asc&orderBy=extension&perPage=1

响应 / 200 OK

{
    "current_page": 1,
    "data": [
        {
            "id": 6,
            "user_id": 23,
            "filename": "1686910391_siuqkT7MvLsmvpVH",
            "real_filename": "seller-288138-barkod-bazlı-iptal-raporu-2023.05.03-18.17.56.pdf",
            "extension": "pdf",
            "deleted_at": null,
            "created_at": "2023-06-16T10:13:11.000000Z",
            "updated_at": "2023-06-16T10:13:11.000000Z"
        }
    ],
    "first_page_url": "https://:8008/api/files?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://:8008/api/files?page=3",
    "links": [
        {
            "url": null,
            "label": "« Previous",
            "active": false
        },
        {
            "url": "http://:8008/api/files?page=1",
            "label": "1",
            "active": true
        },
        {
            "url": "https://:8008/api/files?page=2",
            "label": "2",
            "active": false
        },
        {
            "url": "https://:8008/api/files?page=3",
            "label": "3",
            "active": false
        },
        {
            "url": "http://:8008/api/files?page=2",
            "label": "Next »",
            "active": false
        }
    ],
    "next_page_url": "http://:8008/api/files?page=2",
    "path": "http://:8008/api/files",
    "per_page": 1,
    "prev_page_url": null,
    "to": 1,
    "total": 3
}