Dcat Admin 查询过滤时 multipleSelect 有问题?

版本

"require": {
        "php": "^7.3|^8.0",
        "dcat/laravel-admin": "2.1.7-beta",
        "laravel/framework": "^8.40",
    },

在进行查询过滤是发现无法过滤出结果,如下图所示

Dcat Admin 查询过滤时 multipleSelect 有问题?

Dcat Admin 查询过滤时 multipleSelect 有问题?

模型文件

protected $fillable = [
        'title',
        'summary',
        'link',
        'tag',
        'extend_image',
        'display_order',
        'review_count',
        'share_count',
        'link_review_count',
    ];

    protected $casts = [
        'tag' => 'array',
    ];

后台控制器文件

$grid->filter(function (Grid\Filter $filter) {
    $filter->panel();
    $filter->in('tag')->multipleSelect(Tag::query()->latest()->pluck('name', 'id')->toArray())->width(3);
});

不知道是我的写法有问题,还是版本问题,多选查询过滤不出结果来,有人碰到过吗?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

建议安装【barryvdh/laravel-debugbar】,查看执行的sql,复制到navicat查询,看看能不能查出你要的结果

1年前 评论
ljheisenberg (楼主) 1年前
讨论数量: 18

你单选能查出来吗。tag字段存储的数据是什么格式的,日志里看一下sql是什么样子的 直接复制到数据库看看能查出来吗

1年前 评论
ljheisenberg (楼主) 1年前
怎样的心 (作者) 1年前
怎样的心 (作者) 1年前
ljheisenberg (楼主) 1年前
怎样的心 (作者) 1年前
ljheisenberg (楼主) 1年前
怎样的心 (作者) 1年前
ljheisenberg (楼主) 1年前
Mutoulee

你的逻辑都是错的。

假设你的multipleSelect中的options是[1, 2, 3, 4, 5]

然后下拉选择时候选择了1、3

那么你的SQL相当于:select * from article where tag in(1,3)

再简单的理解为:select * from article where tag = '1' OR tag = '3'

而你文章中的tag字段的实际值是["1", "3"]

总结就是:你把查询的field 和 value 搞反了。

就像楼上说的,tag字段如果你存字符串 '1','2','3'你查询得时候 不能直接in吧 的用find_in_set

1年前 评论
ljheisenberg (楼主) 1年前
Mutoulee (作者) 1年前
ljheisenberg (楼主) 1年前
ljheisenberg (楼主) 1年前
伽蓝幻梦 1年前
ljheisenberg (楼主) 1年前

建议安装【barryvdh/laravel-debugbar】,查看执行的sql,复制到navicat查询,看看能不能查出你要的结果

1年前 评论
ljheisenberg (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!