rennokki / schedule
此软件包已被放弃,不再维护。未建议替代软件包。
Schedule是一个帮助跟踪模型日程的软件包。如果您公司有员工,您可以为他们的日程进行设置,并通过时间查看他们的可用性。
1.6.0
2019-02-27 17:05 UTC
Requires
- laravel/framework: ~5.5
Requires (Dev)
- orchestra/testbench: ~3.5.0|~3.6.0
- phpunit/phpunit: ^6.2|^7.0
README
Schedule
Schedule是一个帮助跟踪模型日程的软件包。如果您公司有员工,您可以为他们的日程进行设置,并通过时间查看他们的可用性。
灵感
此软件包受Spatie's Opening Hours软件包的启发,该软件包使用日程安排,但仅静态使用,而不是将其绑定到模型。这激发了我将其与Eloquent模型而不是经典类更紧密地联系起来的想法。
安装
使用Composer CLI安装软件包
$ composer require rennokki/schedule
对于不支持软件包发现的Laravel版本,您应将其添加到您的config/app.php
文件中的providers
数组中
\Rennokki\Schedule\ScheduleServiceProvider::class,
发布迁移文件和配置文件。
$ php artisan vendor:publish
迁移数据库。
$ php artisan migrate
将特性添加到您的模型中。
use Rennokki\Schedule\Traits\HasSchedule; class User extends Model { use HasSchedule; ... }
入门
为了开始使用,让我们为我们的用户创建一个日程安排。它将从星期一到星期五,从8点到12点,以及从13点到18点。
$user->setSchedule([ 'monday' => ['08:00-12:00', '13:00-18:00'], 'tuesday' => ['08:00-12:00', '13:00-18:00'], 'wednesday' => ['08:00-12:00', '13:00-18:00'], 'thursday' => ['08:00-12:00', '13:00-18:00'], 'friday' => ['08:00-12:00', '13:00-18:00'], ]); $user->hasSchedule(); // true
假设该用户的生日在每年的3月1日,因此我们将其添加到排除列表中。此外,圣诞节的第一天和第二天对任何人都是免费的,我们还将2018年5月1日添加到我们的排除列表中。
注意:2018年5月1日只会发生一次,它不是重复发生的。
$user->setExclusions([ '03-01' => ['08:00-12:00'], '12-25' => [], '12-26' => [], '2018-05-01' => [], ]);
检查可用性
您可以通过日期来检查用户在某一天或日期是否有工作时间。传递日期也可以与Carbon实例一起使用。
$user->isAvailableOn('monday'); // true $user->isAvailableOn('05-28'); // true; This is Monday, in 2018 (current year) $user->isAvailableOn('2018-05-28'); // true $user->isAvailableOn(Carbon::create(2018, 5, 28, 0, 0, 0)); // true $user->isUnavailableOn('monday'); // false $user->isUnavailableOn('05-28'); // false $user->isUnavailableOn('2018-05-28'); // false $user->isUnavailableOn(Carbon::create(2018, 5, 28, 0, 0, 0)); // false
如果那天有排除项,它将根据那天设置的日程返回正确的值
$user->isUnavailableOn('12-25'); // true $user->isUnavailableOn('03-01'); // false
检查特定时间的可用性
您还可以检查特定天特定时间的可用性。
$user->isAvailableOnAt('monday', '09:00'); // true $user->isUnavailableOnAt('monday', '09:00'); // false
获取某天的工时或分钟数
您可以得到某天安排的工时或分钟数。这对于跟踪可工作小时数很有用,例如。
$user->getHoursOn('03-01'); // 4 $user->getHoursOn('12-26'); // 0 $user->getHoursOn('05-28'); // 9 $user->getHoursOn('2018-05-28'); // 9 $user->getMinutesOn('03-01'); // 240
删除日程
如果您计划删除用户的日程,可以通过调用deleteSchedule()
来实现。
$user->deleteSchedule(); $user->hasSchedule(); // false