表单查询过滤
提供了一系列的方法实现表格数据的查询过滤:
$grid->filter(function($filter){
// 在这里添加字段过滤器
$filter->like('name', 'name');
});
表单类型
请查看表单可用组件
$filter->between("created_at", "名称")->component(DatePicker::make()->type("daterange"));
查询类型
目前支持的过滤类型有下面这些:
equal
sql: ... WHERE
column= "$input"
:
$filter->equal('column', $label);
not equal
sql: ... WHERE
column!= "$input"
:
$filter->notEqual('column', $label);
like
sql: ... WHERE
columnLIKE "%$input%"
:
$filter->like('column', $label);
ilike
sql: ... WHERE
columnILIKE "%$input%"
:
$filter->ilike('column', $label);
contains
等于like查询
$filter->contains('title');
starts with
查询以输入内容开头的title字段数据
$filter->startsWith('title');
starts with
查询以输入内容结尾的title字段数据
$filter->endsWith('title');
大于
sql: ... WHERE
column> "$input"
:
$filter->gt('column', $label);
小于
sql: ... WHERE
column< "$input"
:
$filter->lt('column', $label);
between
sql: ... WHERE
columnBETWEEN "$start" AND "$end"
:
$filter->between('column', $label);
in
sql: ... WHERE
columnin (...$inputs)
:
$filter->in('column', $label);
notIn
sql: ... WHERE
columnnot 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: ... WHERE
titleLIKE "%$input" OR
contentLIKE "%$input"
:
$filter->where(function ($query) {
$query->where('title', 'like', "%{$this->input}%")
->orWhere('content', 'like', "%{$this->input}%");
}, 'Text');
sql: ... WHERE
rate>= 6 AND
created_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}%");
});
}, '地址或手机号');