Skip to content

Commit 4883133

Browse files
committed
添加 Grid 表单筛选功能
1 parent 58e0cb2 commit 4883133

33 files changed

+1427
-72
lines changed

docs/components.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,11 @@ Cascader::make()->panel(true)
227227
### Slider 滑块
228228
### TimePicker 时间选择器
229229
### DatePicker 日期选择器
230+
231+
```php
232+
DatePicker::make()
233+
```
234+
230235
### DateTimePicker 日期时间选择器
231236
### Upload 上传
232237
通过以下的调用来生成上传组件
24.6 KB
Loading
24.6 KB
Loading

docs/grid.md

Lines changed: 208 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,214 @@ $model->where('title', 'like', "%{$input}%")
203203
```php
204204
$grid->quickSearchPlaceholder("占位符文字");
205205
```
206-
### 表单搜索
206+
### 表单模式搜索
207+
208+
提供了一系列的方法实现表格数据的查询过滤:
209+
210+
```php
211+
$grid->filter(function($filter){
212+
// 在这里添加字段过滤器
213+
$filter->like('name', 'name');
214+
215+
});
216+
```
217+
218+
#### 查询类型
219+
220+
目前支持的过滤类型有下面这些:
221+
222+
### equal
223+
224+
`sql: ... WHERE`column`= "$input"`
225+
226+
```php
227+
$filter->equal('column', $label);
228+
```
229+
230+
### not equal
231+
232+
`sql: ... WHERE`column`!= "$input"`
233+
234+
```php
235+
$filter->notEqual('column', $label);
236+
```
237+
238+
### like
239+
240+
`sql: ... WHERE`column`LIKE "%$input%"`
241+
242+
```php
243+
$filter->like('column', $label);
244+
```
245+
246+
### ilike
247+
248+
`sql: ... WHERE`column`ILIKE "%$input%"`
249+
250+
```php
251+
$filter->ilike('column', $label);
252+
```
253+
254+
### contains
255+
256+
> since v1.6.12
257+
258+
等于like查询
259+
260+
```php
261+
$filter->contains('title');
262+
```
263+
264+
### starts with
265+
266+
> since v1.6.12
267+
268+
查询以输入内容开头的title字段数据
269+
270+
```php
271+
$filter->startsWith('title');
272+
```
273+
274+
### starts with
275+
276+
> since v1.6.12
277+
278+
查询以输入内容结尾的title字段数据
279+
280+
```php
281+
$filter->endsWith('title');
282+
```
283+
284+
### 大于
285+
286+
`sql: ... WHERE`column`> "$input"`
287+
288+
```php
289+
$filter->gt('column', $label);
290+
```
291+
292+
### 小于
293+
294+
`sql: ... WHERE`column`< "$input"`
295+
296+
```php
297+
$filter->lt('column', $label);
298+
```
299+
300+
### between
301+
302+
`sql: ... WHERE`column`BETWEEN "$start" AND "$end"`
303+
304+
```php
305+
$filter->between('column', $label);
306+
307+
// 设置datetime类型
308+
$filter->between('column', $label)->datetime();
309+
310+
// 设置time类型
311+
$filter->between('column', $label)->time();
312+
```
313+
314+
### in
315+
316+
`sql: ... WHERE`column`in (...$inputs)`
317+
318+
```php
319+
$filter->in('column', $label)->multipleSelect(['key' => 'value']);
320+
```
321+
322+
### notIn
323+
324+
`sql: ... WHERE`column`not in (...$inputs)`
325+
326+
```php
327+
$filter->notIn('column', $label)->multipleSelect(['key' => 'value']);
328+
```
329+
330+
### date
331+
332+
`sql: ... WHERE DATE(`column`) = "$input"`
333+
334+
```php
335+
$filter->date('column', $label);
336+
```
337+
338+
### day
339+
340+
`sql: ... WHERE DAY(`column`) = "$input"`
341+
342+
```php
343+
$filter->day('column', $label);
344+
```
345+
346+
### month
347+
348+
`sql: ... WHERE MONTH(`column`) = "$input"`
349+
350+
```php
351+
$filter->month('column', $label);
352+
```
353+
354+
### year
355+
356+
`sql: ... WHERE YEAR(`column`) = "$input"`
357+
358+
```php
359+
$filter->year('column', $label);
360+
```
361+
362+
### where
363+
364+
可以用where来构建比较复杂的查询过滤
365+
366+
`sql: ... WHERE`title`LIKE "%$input" OR`content`LIKE "%$input"`
367+
368+
```php
369+
$filter->where(function ($query) {
370+
371+
$query->where('title', 'like', "%{$this->input}%")
372+
->orWhere('content', 'like', "%{$this->input}%");
373+
374+
}, 'Text');
375+
```
376+
377+
`sql: ... WHERE`rate`>= 6 AND`created_at`= {$input}`:
378+
379+
```php
380+
$filter->where(function ($query) {
381+
382+
$query->whereRaw("`rate` >= 6 AND `created_at` = {$this->input}");
383+
384+
}, 'Text');
385+
```
386+
387+
关系查询,查询对应关系`profile`的字段:
388+
389+
```php
390+
$filter->where(function ($query) {
391+
392+
$query->whereHas('profile', function ($query) {
393+
$query->where('address', 'like', "%{$this->input}%")->orWhere('email', 'like', "%{$this->input}%");
394+
});
395+
396+
}, '地址或手机号');
397+
```
398+
399+
#### 表单类型
400+
401+
请查看表单可用组件
402+
403+
```php
404+
$filter->between("created_at", "名称")->component(DatePicker::make()->type("daterange"));
405+
```
406+
407+
使用`component`方法设置表单类型
408+
409+
### 标签页模式搜索
410+
411+
例如:产品订单列表的 `全部 代付款 代发货` 等状态的快捷筛选
412+
413+
![image-20200313093513048](grid.assets/image-20200313093513048.png)
207414

208415
## 字段使用
209416

0 commit comments

Comments
 (0)