@@ -203,7 +203,214 @@ $model->where('title', 'like', "%{$input}%")
203
203
``` php
204
204
$grid->quickSearchPlaceholder("占位符文字");
205
205
```
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 )
207
414
208
415
## 字段使用
209
416
0 commit comments