rpj/daterangepicker

为Laravel Nova 4提供简单的日期范围过滤器。

0.0.8 2024-04-29 19:17 UTC

This package is auto-updated.

Last update: 2024-08-28 21:53:17 UTC


README

一个过滤器,用于Nova 4,使用Daterangepicker库显示日期范围选择器,而不是单个日期选择器。

安装

在您的nova项目中运行此命令:composer require rpj/daterangepicker

如何使用

在您的Nova资源中,只需在filters函数中添加DateRangeFilter类,并包含您希望用作过滤资源的列。

 use Rpj\Daterangepicker\Daterangepicker;

 public function filters(Request $request)
    {
        return [
            new Daterangepicker('created_at'),
        ];
    }

此外,您还可以传递一个包含默认日期范围的字符串,以便在组件中使用。如果没有传递值,则默认设置为TODAY,但如果您想取消日期过滤器以显示所有记录,则可以使用DateHelper::ALL。

此外,我们添加了一个自定义日期范围选择器,允许用户指定按其值排序的列,以及在关联表中防止模糊的MySQL错误的情况下,您可以指定实际的表名以了解您所引用的实际列。这包括检查日期范围选择器的列以及按升序/降序方向排序的列。

use Rpj\Daterangepicker\Daterangepicker;
use Rpj\Daterangepicker\DateHelper;

public function filters(Request $request)
{
    return [
        new Daterangepicker('users.created_at', DateHelper::THIS_WEEK, 'users.name', 'desc'),
    ];
}

最后,我们添加了使用Carbon类设置自定义预设日期的选项。您还可以为日期范围组件设置最小和最大日期。

use Rpj\Daterangepicker\Daterangepicker;
use Rpj\Daterangepicker\DateHelper;
use Carbon\Carbon;

public function filters(Request $request)
{
    return [
        (new Daterangepicker(
            'users.created_at',
            DateHelper::THIS_WEEK,
            'users.name',
            'desc'
        ))
        ->setRanges([
            'Today' => [Carbon::today(), Carbon::today()],
            'Yesterday' => [Carbon::yesterday(), Carbon::yesterday()],
            'This week' => [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()],
            'This month' => [Carbon::now()->startOfMonth(), Carbon::now()->endOfMonth()],
            'Last month' => [Carbon::now()->subMonth()->startOfMonth(),Carbon::now()->subMonth()->endOfMonth()],
        ])
        ->setMaxDate(Carbon::today())
        ->setMinDate(Carbon::today()->endOfYear()),
    ];
}