alohajaycee / laravel-traversify
轻松遍历Eloquent模型
v2.2.16
2021-12-13 02:58 UTC
Requires
This package is auto-updated.
Last update: 2024-09-13 09:13:38 UTC
README
安装
Composer
使用以下命令通过Composer安装:composer require jayceedaily/laravel-traversify
模型设置
use Traversify/Traversify; use Traversify/Traversable; use Eloquent; class Task extends Eloquent implements Traversable { use Traversify; // Configure the fields to be searched protected $search = [ 'name', 'description' ]; // Configure the fields to be sorted protected $sort = [ 'created_at', 'name', 'completed_at' ]; // Configure the fields to be filtered protected $filter = [ 'type_id', 'status' ]; }
控制器设置
use MyModel class MyController { public function index() { return MyModel::traversify(); } }
配置
要使用搜索功能,您必须创建一个静态变量并分配一个包含需要搜索的字段数组的数组。以下是一些示例:
- $searchables
- $filterables
- $orderables
- $rangables
搜索
这使用SQL中的%关键字%方法。Traversify目前不支持scout或任何高级搜索引擎。对于基本使用,这已经足够。
use Traversify/Traversify; class MyModel { use Traversify; public static $searchables = ['title', 'description'] }
过滤
使用过滤来处理表的外键值。这将仅检索与请求的过滤器匹配的外键值的记录。
use Traversify/Traversify; class MyModel { use Traversify; public static $filterables = ['status_id', 'is_active'] }
排序/排序
可以使用数字、字母排序字段,但通常用于日期,这也是支持的。
use Traversify/Traversify; class MyModel { use Traversify; public static $orderables = ['created_at', 'is_active'] }
范围
仅显示具有请求值范围内的记录。需要2个值,起始值和结束值。
use Traversify/Traversify; class MyModel { use Traversify; public static $rangables = ['created_at', 'price'] }
自定义
对于额外的自定义查询,您可以在traversify()
内传递一个查询函数。然后,将其与Traversify已经使用的现有查询组合。
use MyModel; class MyController { public function index() { return MyModel::traversify(function($q){ $q->where('is_active', TRUE); }); } }