Quick search ¶
Since v1.7.0
Quick Search
is another table data search method other than filter
, which is used to quickly filter the data you want. The way to open it is as follows:
$grid->quickSearch();
A search box will appear in the header:
Set different search methods by passing different parameters to the quickSearch
method. There are several ways to use them.
Like Search ¶
The first way, by setting the field name for a simple like
query
$grid->quickSearch('title');
// After submitting the model will execute the following query
$model->where('title', 'like', "%{$input}%");
Or do a 'like` query on multiple fields:
$grid->quickSearch('title', 'desc', 'content');
// After submitting the model will execute the following query
$model->where('title', 'like', "%{$input}%")
->orWhere('desc', 'like', "%{$input}%")
->orWhere('content', 'like', "%{$input}%");
Custom Search ¶
The second way gives you more control over your search criteria.
$grid->quickSearch(function ($model, $query) {
$model->where('title', $query)->orWhere('desc', 'like', "%{$query}%");
});
The parameter $query
of the closure is filled in for the content in the search box, and the query in the closure is submitted after the submission.
Quick syntax search ¶
The third way is to refer to the search syntax of Github
for quick search. The calling method is as follows:
/ / Do not pass parameters
$grid->quickSearch();
Fill in the contents of the search box according to the following syntax, after the submission will be the corresponding query:
Compare Query ¶
title:foo`,`title:!foo
$model->where('title', 'foo');
$model->where('title', '!=', 'foo');
rate:>10`, `rate:<10`, `rate:>=10`, `rate:<=10
$model->where('rate', '>', 10);
$model->where('rate', '<', 10);
$model->where('rate', '>=', 10);
$model->where('rate', '<=', 10);
In, NotIn query ¶
status:(1,2,3,4)`, `status:!(1,2,3,4)
$model->whereIn('status', [1,2,3,4]);
$model->whereNotIn('status', [1,2,3,4]);
Between Query ¶
score:[1,10]
$model->whereBetween('score', [1, 10]);
Time Date Function Query ¶
created_at:date,2019-06-08
$model->whereDate('created_at', '2019-06-08');
created_at:time, 09:57:45
$model->whereTime('created_at', '09:57:45');
created_at:day,08
$model->whereDay('created_at', '08');
created_at:month,06
$model->whereMonth('created_at', '06');
created_at:year,2019
$model->whereYear('created_at', '2019');
Like Query ¶
content:%Laudantium%
$model->where('content', 'like', 'Laudantium');
Regular query ¶
username:/song/
$model->where('username', 'REGEXP', 'song');
Please use MYSQL regular syntax here
Multi-conditional combination search ¶
You can implement AND query of multiple fields by separating multiple search statements with commas, such as username:%song% status:(1,2,3)
, after running, the following search will be run.
$model->where('username', 'like', '%song%')->whereIn('status', [1, 2, 3]);
If a condition is an OR
query, just add a |
symbol before the statement unit: username:%song% |status:(1,2,3)
$model->where('username', 'like', '%song%')->orWhereIn('status', [1, 2, 3]);
If the filled query text contains spaces, you need to put it in double quotes: updated_at:"2019-06-08 09:57:45"
Label as the name of the query field ¶
If it is not convenient to get the field name, you can directly use the label
name as the query field.
// For example, the header column of `user_status` is set to `user state`.
$grid->column('user_status', 'user status');
Then you can fill in the user status: (1, 2, 3)
to execute the following query
$model->whereIn('user_status', [1, 2, 3]);