alohajaycee/laravel-traversify

轻松遍历Eloquent模型

v2.2.16 2021-12-13 02:58 UTC

README

Total Downloads Scrutinizer Code Quality

安装

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);
               
          });
     }
}