2017-05-10 10 views
1

Laravelアプリケーションには少数のユーザーしかいません。カスタムジョブをLaravelに追加

各ユーザーは、電子メールを送信するためにデータベースに保存された時間(時と分)を設定します。私はすでに何

$schedule->command(check_emails)->everyMinute(); 

ユーザーがその時に自分の電子メールを送信するように設定されている場合は、それが送信されます。

私は毎分実行されたコマンドを持っています。

データベースから1分ごとにチェックする必要はなく、ユーザーが設定した時点で電子メールを送信するようにコマンドを自動的に設定する方法はありますか?

答えて

0

コマンドで引数を渡すことができます。コンソールコマンドの署名を以下のように設定します。

ここで、timeはコンソールコマンドの引数です。データベースに格納されている値は分または時間にすることができます。

$schedule->command('check_emails minute')->everyMinute(); 
$schedule->command('check_emails hour')->hourly(); 

この2つのスケジュールは、毎分の電子メールと電子メールを好むユーザーを見つけるのに役立ちます。だからあなたのコードは、別々にユーザーを見つけるための条件を作ることができます。あなたは引数を利用しているので、2つの関数を作成する必要はありません。

コンソールコマンドのハンドルコードでは、このように見える場合があります。

$time = $this->argument('time'); 
// Get the users who set send_email_time at $time 
$users = User::where('send_email_time', $time)->get(); 
// ... 
// Code to send email to $users 
// ... 
関連する問題