Laravel 8에서 사용자 지정 명령을 만드는 방법
11688 단어 codenewbielaravelphpbeginners
메일을 통해 모든 사용자에게 매일 동기 부여 인용문을 보내고 싶다고 가정해 보겠습니다. 수동으로 수행하는 대신 laravel에서 제공하는 사용자 지정 명령을 만들 수 있습니다.
사용자 지정 명령을 만들려면 사용자 지정 명령 파일을 만드는 다음 명령을 실행해야 합니다.
php artisan make:command SendMotivatonalQuoteCommand
위의 명령은 두 개의 보호 변수
SendMotivatonalQuoteCommand
및 signature
를 포함하는 description
파일과 메인 로직을 작성할 수 있는 핸들 메소드를 생성합니다.이제 SendMotivatonalQuoteCommand 파일을 엽니다.
handle()
메서드에 작성해 보겠습니다.인용문 배열에서 임의의 동기 부여 인용문을 선택하고 모든 사용자를 선택하는 논리를 작성해 봅시다. 더 나은 이해를 위해 아래 코드를 참조하십시오.
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\User;
use App\Notifications\SendDailyQuotesNotification;
use Illuminate\Support\Facades\Notification;
class SendDailyQuotes extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'quotes:send-daily-quotes';
/**
* The console command description.
*
* @var string
*/
protected $description = 'This command will send quotes daily to all the users registered
to this application';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$dailyQuotes = [
'Theodore Roosevelt' => 'Do what you can, with what you have, where you are.',
'Oscar Wilde' => 'Be yourself; everyone else is already taken.',
'William Shakespeare' => 'This above all: to thine own self be true.',
'Napoleon Hill' => 'If you cannot do great things, do small things in a great way.',
'Milton Berle' => 'If opportunity doesn’t knock, build a door.'
];
// generate the random key and get its quote in data variable
$getRandamQuote = array_rand($dailyQuotes);
$data = $dailyQuotes[$getRandamQuote];
$users = User::all();
$users->each(function ($user) use ($data) {
Notification::send($user, new SendDailyQuotesNotification($data));
});
$this->info('Successfully sent daily quote to everyone.');
}
}
인용문과 함께 알림을 보내려면 다음 명령을 통해 알림을 생성해야 합니다.
php artisan make:notification SendDailyQuotesNotification
알림 파일을 열고 아래 코드 추가
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
use App\Models\User;
class SendDailyQuotesNotification extends Notification
{
use Queueable;
public $quote;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($data)
{
$this->quote = $data;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->greeting("Hello {$notifiable->name}, ")
->subject('Daily Quotes')
->line('This daily quotes helps you to stay encouraged')
->line('Quote of the day : ' . $this->quote)
->action('Notification Action', url('/'))
->line('Thank you for using our application!');
}
}
이제 다음 명령을 실행하십시오.
php artisan quotes:send-daily-quotes
이 명령을 매일 자동으로 실행하려면 Laravel 스케줄러에서 명령을 설정하기만 하면 됩니다.
app/Console/Kernel.php
에서 이 작업을 수행할 수 있습니다.protected function schedule(Schedule $schedule)
{ $schedule->command('users:send_doc_link')->daily()->at('07:00');
}
이렇게 하면 매일 오전 7시에 명령이 실행됩니다.
이러한 방식으로 애플리케이션에 대한 사용자 지정 명령을 생성하고 실행하도록 예약하거나 매일 실행하도록 crontab을 설정할 수 있습니다.
내 게시물이 마음에 드시기 바랍니다 😃 🦄
감사합니다. 🦁 🦁
Reference
이 문제에 관하여(Laravel 8에서 사용자 지정 명령을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/snehalkadwe/how-to-create-custom-command-in-laravel-8-f64텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)