Criar Schedules
Crie o arquivo que executará a função, exemplo:
app\Console\Commands\UpdateOverdueOrders.php
<?php
namespace App\Console\Commands;
use App\Models\Order;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
class UpdateOverdueOrders extends Command
{
protected $signature = 'orders:update-overdue';
protected $description = 'Atualiza status de pendente para atrasado em ordens vencidas';
public function handle()
{
$updated = Order::where('status', 'pendente')
->where('due_date', '<', now()->subDays(2))
->update(['status' => 'atrasado']);
if ($updated > 0) {
Log::info("{$updated} pagamentos atualizados para atrasado.");
} else {
Log::info("Nenhum pagamento em atraso adicionado.");
}
}
}
No arquivo routes\console.php
<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schedule;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote')->hourly();
Schedule::command('orders:update-overdue')->dailyAt('11:00'); //Irá rodar o comando todo dia as 11:00 Horário do laravel!
//Schedule::command('orders:update-overdue')->everyMinute(); // TESTE DO CRONJOB - COMENTAR
Galeria de Imagens
Compartilhe esta dica
Envie esta dica diretamente para o e-mail de um colega desenvolvedor.