hassanalisalem / querybuilder
此包用于从 jQuery Query builder 插件规则构建查询。
v1.1.2
2018-10-08 12:06 UTC
Requires
- php: ~5.6|~7.0
- illuminate/support: ~5.1
Requires (Dev)
- phpunit/phpunit: >=5.4.3
- squizlabs/php_codesniffer: ^2.3
README
jQuery Query Builder
此包用于构建 jQuery Query Builder 库的查询表单,它与 Laravel 模型一起工作,并使用模型关系。它还隐藏了您的表结构,因此您不需要将过滤器命名为您的表列
结构
安装
通过 Composer
$ composer require hassanalisalem/querybuilder
用法
在您的控制器或您构建查询的任何地方
use hassanalisalem\querybuilder\Query; ... ... $model = new User(); $rules = $request->rules; // rules from the jQuery query builder form. $query = Query::build($model, $rules); // you can use it as: $query->get() to get the query result // or to check the query string: $query->toSql()
在模型中
您应该定义一个名为 filterable 的公共数组变量。这应该包含所有过滤器,作为过滤器 ID 或键(来自 jQuery Query Builder 过滤器)=> 过滤器值。
如果键不明确,您可以使用 "as"。例如,如果我有名为 industries 的表,并且我想查询 whereIn('id', [])...,则键应为 'filter_name_industries' => 'industries.id as industries'
public $filterable = [ 'filter_name' => 'this.name', 'filter_user_post_title' => 'posts.title', 'filter_user_post_comment' => 'posts.comments.text', 'filter_industry' => 'industries.id as industries', // if there is ambiguous key. // it is recommended to prepend the key with 'filter_' ];
这意味着名称来源是模型本身。posts 表示标题来自另一个名为 posts 的关系(posts)应在模型中是一个返回关系的函数.. comments 是 Post 中返回关系的函数..