You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rappasoft Datatables v1日期过滤器配置报错求助

在Rappasoft Datatables v1中配置日期过滤器的解决方案

你遇到的array_sum(): Argument #1 ($array) must be of type array, bool given错误,核心原因是Rappasoft Datatables的日期过滤器默认返回包含start和end键的数组(对应日期范围选择的起止值),而非单个日期字符串,直接用where('someDate', $type)会导致查询逻辑异常,触发内部类型错误。

下面是正确的配置和修复步骤:

1. 确保过滤器类型正确

先在Datatable类的filters()方法中,将someDate声明为日期类型过滤器:

public function filters(): array
{
    return [
        // 其他过滤器配置...
        'someDate' => DateFilter::make('目标日期'),
    ];
}

2. 调整查询逻辑处理日期范围

日期过滤器返回的数组格式为['start' => 'YYYY-MM-DD', 'end' => 'YYYY-MM-DD'],需要用范围查询匹配:

public function query(): Builder
{
    return Model::query()
        ->when($this->getFilter('someDate'), function ($query, $dateRange) {
            $query->whereBetween('someDate', [$dateRange['start'], $dateRange['end']]);
        });
}

3. 特殊场景:单个日期匹配

如果业务需要匹配某一天而非范围,可先判断返回值结构再处理:

public function query(): Builder
{
    return Model::query()
        ->when($this->getFilter('someDate'), function ($query, $dateValue) {
            if (is_array($dateValue)) {
                $query->whereBetween('someDate', [$dateValue['start'], $dateValue['end']]);
            } else {
                $query->whereDate('someDate', $dateValue);
            }
        });
}

错误根源补充

Rappasoft Datatables的日期过滤器前端默认是范围选择器,因此getFilter('someDate')返回数组。你之前的代码把数组直接传入where条件,导致Eloquent在处理查询时内部调用数组操作函数时,收到的是where语句返回的bool值,最终抛出类型错误。

内容的提问来源于stack exchange,提问作者Sead Silajdzic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:27:09