dcat admin 复杂查询multpleSelect全等
时间: 2023-12-11 13:04:36 浏览: 55
MultiSelect 多选
如果你要进行复杂查询,例如查询`tags`字段包含`php`或`laravel`,且`status`字段为`open`的记录,可以结合`select`筛选器和`multipleSelect`筛选器来实现。具体步骤如下:
1. 在`tags`字段上使用`multipleSelect`筛选器,设置`options`选项,指定可选的值。
```php
$filter->multipleSelect('tags', '标签')->options([
'php' => 'PHP',
'laravel' => 'Laravel',
'javascript' => 'JavaScript',
]);
```
2. 在`status`字段上使用`select`筛选器,设置`options`选项,指定可选的值。
```php
$filter->select('status', '状态')->options([
'open' => '开启',
'closed' => '关闭',
]);
```
3. 在查询条件中使用`$or`操作符,来实现`tags`字段包含`php`或`laravel`的查询。
```php
$query->where(function ($query) use ($tags) {
foreach ($tags as $tag) {
$query->orWhere('tags', 'like', "%{$tag}%");
}
});
```
4. 在查询条件中使用`$eq`操作符,来实现`status`字段为`open`的查询。
```php
$query->where('status', '=', 'open');
```
完整的代码如下所示:
```php
$filter->multipleSelect('tags', '标签')->options([
'php' => 'PHP',
'laravel' => 'Laravel',
'javascript' => 'JavaScript',
]);
$filter->select('status', '状态')->options([
'open' => '开启',
'closed' => '关闭',
]);
$query->where(function ($query) use ($tags) {
foreach ($tags as $tag) {
$query->orWhere('tags', 'like', "%{$tag}%");
}
});
$query->where('status', '=', 'open');
```
这样就可以查询出`tags`字段包含`php`或`laravel`,且`status`字段为`open`的记录了。需要注意的是,`multipleSelect`筛选器查询的是包含任意选中值的记录,如果要查询包含所有选中值的记录,可以使用`$all`操作符,具体可以参考我之前的回答。
阅读全文