Skip to content

任务调度

使用 Laravel 得任务调度,会自动为当前所有租户执行命令。为了实现这一个功能,在创建命令的时候需要继承 TenancyCommand,可以使用 php artisan catch:tenant:command 命令创建命令,如下:

php
php artisan catch:tenant:command

然后在命令中会自动继承 TenancyCommand,如下:

php
namespace App\Commands;

use CatchTenant\Commands\TenancyCommand;

class TestCommand extends TenancyCommand
{
    
    /**
     * 命令签名
     * 
     * @var string
     */
    protected $signature = 'test';

    /**
     * 命令描述
     * 
     * @var string
     */
    protected $description = '测试命令 - 在所有租户环境中执行';

    /**
     * 命令处理逻辑
     * 
     * @return void
     */
    public function handle(): void
    {
        // 此处的代码将在每个租户环境中分别执行
        // 可以通过 $this->tenant 获取当前租户信息
        
        $this->info('正在租户 [' . $this->tenant->id . '] 环境中执行命令');
        
        // 执行租户特定的业务逻辑
        // ...
    }
}

系统将自动遍历所有租户并在每个租户的环境中执行该命令。