表单查询过滤

提供了一系列的方法实现表格数据的查询过滤:

  1. $grid->filter(function($filter){
  2. // 在这里添加字段过滤器
  3. $filter->like('name', 'name');
  4. });

表单类型

请查看表单可用组件

$filter->between("created_at", "名称")->component(DatePicker::make()->type("daterange"));

查询类型

目前支持的过滤类型有下面这些:

equal

sql: ... WHEREcolumn= "$input"

$filter->equal('column', $label);

not equal

sql: ... WHEREcolumn!= "$input"

$filter->notEqual('column', $label);

like

sql: ... WHEREcolumnLIKE "%$input%"

$filter->like('column', $label);

ilike

sql: ... WHEREcolumnILIKE "%$input%"

$filter->ilike('column', $label);

contains

等于like查询

$filter->contains('title');

starts with

查询以输入内容开头的title字段数据

$filter->startsWith('title');

starts with

查询以输入内容结尾的title字段数据

$filter->endsWith('title');

大于

sql: ... WHEREcolumn> "$input"

$filter->gt('column', $label);

小于

sql: ... WHEREcolumn< "$input"

$filter->lt('column', $label);

between

sql: ... WHEREcolumnBETWEEN "$start" AND "$end"

$filter->between('column', $label);

in

sql: ... WHEREcolumnin (...$inputs)

$filter->in('column', $label);

notIn

sql: ... WHEREcolumnnot in (...$inputs)

$filter->notIn('column', $label);

date

sql: ... WHERE DATE(column) = "$input"

$filter->date('column', $label);

day

sql: ... WHERE DAY(column) = "$input"

$filter->day('column', $label);

month

sql: ... WHERE MONTH(column) = "$input"

$filter->month('column', $label);

year

sql: ... WHERE YEAR(column) = "$input"

$filter->year('column', $label);

where

可以用where来构建比较复杂的查询过滤

sql: ... WHEREtitleLIKE "%$input" ORcontentLIKE "%$input"

$filter->where(function ($query) {

    $query->where('title', 'like', "%{$this->input}%")
        ->orWhere('content', 'like', "%{$this->input}%");

}, 'Text');

sql: ... WHERErate>= 6 ANDcreated_at= {$input}:

$filter->where(function ($query) {

    $query->whereRaw("`rate` >= 6 AND `created_at` = {$this->input}");

}, 'Text');

关系查询,查询对应关系profile的字段:

$filter->where(function ($query) {

    $query->whereHas('profile', function ($query) {
        $query->where('address', 'like', "%{$this->input}%")->orWhere('email', 'like', "%{$this->input}%");
    });

}, '地址或手机号');