houseoftech/laravel-recurring

simshaun/recurr 集成于 Laravel/Eloquent。

v2.0 2019-10-09 07:06 UTC

README

安装

使用 Composer 在项目的根目录下安装此包。

$ composer require houseoftech/laravel-recurring

注意:如果使用 Laravel 5.x,则需要版本 1。

$ composer require houseoftech/laravel-recurring:1.5.3

此包包含一个可发布的资产。发布将会将配置复制到您的项目中以便修改。

$ php artisan vendor:publish

配置文件位于 config/laravel-recurring.php

用法

<?php

namespace App;

use BrianFaust\LaravelRecurring\Traits\RecurringTrait;
use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    use RecurringTrait;
}
Route::get('/', function () {
    $task = App\Task::first();

    $task->recurr()->first();

    $task->recurr()->last();

    $task->recurr()->next();

    $task->recurr()->current();

    $task->recurr()->rule();

    $task->recurr()->schedule();
});

示例

    $task = new App\Task();

    $task->start_at = '2017/1/1';

    $task->until = '2017/12/12';

    $task->by_day = 'MO,FR';

    $task->frequency = 'WEEKLY';

    $task->timezone = 'Europe/Amsterdam';

    $start = new DateTime('2017/5/5');

    $end = new DateTime('2017/5/15');

    print_r($task->recurr()->scheduleBetween($start, $end));
	
	// Using exceptions and inclusions
	
	$task->exceptions = ['2017/05/08'];
	
	$task->inclusions = ['2017/05/10', '2017/05/11'];
	
	print_r($task->recurr()->scheduleBetween($start, $end));

直接从相关模型中获取异常和包含日期

异常和包含可以传递为一个日期字符串、日期字符串数组,或者一个 Eloquent.Collection。值将从 date 列中提取。

示例异常迁移

	Schema::create('exceptions', function (Blueprint $table) {
		$table->increments('id');
		$table->integer('event_id')->unsigned();
		$table->datetime('date');
		$table->timestamps();
	});

假设 Task 模型与 Exception 有 hasMany 关联,例如。

	public function exceptions()
	{
		return $this->hasMany(Exception::class);
	}

异常可以直接传递给 recurr。

	$task = App\Task::with('exceptions')->find(1);
	
	print_r($task->recurr()->schedule());

测试

$ phpunit

安全

如果您在此包中发现安全漏洞,请向 Brian Faust 发送电子邮件至 hello@brianfaust.me。所有安全漏洞都将得到及时处理。

致谢

许可证

MIT © Brian Faust