hassanalisalem/querybuilder

此包用于从 jQuery Query builder 插件规则构建查询。

v1.1.2 2018-10-08 12:06 UTC

This package is not auto-updated.

Last update: 2024-09-22 02:42:00 UTC


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 中返回关系的函数..