如果项目(多个项目)将在几天后过期,如何通知管理员-Laravel
How to notify the admin if the items(Multiple items) are going to expire in days later-Laravel
项目table中有很多项目,项目table中有一个过期日期列。我只想在每个项目提前一个日期过期之前每天收到推送通知(过期日期彼此不同,可以有一个过期日期到多个项目)。我是 laravel 的新手。请帮助我。
您可以在 Laravel 中创建任务计划程序。您可以在此处从其文档中获取更多信息:https://laravel.com/docs/5.8/scheduling
1) 您可以在调度代码中创建登录名。获取明天到期的所有物品,并将物品的详细信息发送到管理员邮箱。
如果您对用户定义的 artisan 命令有一些了解,您还可以实现 scheduling-artisan-commands https://laravel.com/docs/5.8/scheduling#scheduling-artisan-commands。
这可以通过 Laravel task scheduling
简单地完成
你需要创建一个custom artisan command喜欢
php artisan make:command SendItemExpiryEmailsToAdmin
在App\Console\Commands
下你会发现应该创建一个classSendItemExpiryEmailsToAdmin
。
i) 首先您需要定义用于从命令行调用的命令的签名。
protected $signature = 'email:send-item-expiry-email-to-admin';
ii) 在同一个 class 的 handle()
中,写下你的逻辑。下面给出了一个示例逻辑。您将需要创建一个 Mailable class 来发送邮件。
public function handle() {
// To fetch all the items ids which are going to expired today.
$itemsIds = Items::whereBetween('expired',
[Carbon::now()->setTime(0,0)->format('Y-m-d H:i:s'),
Carbon::now()->setTime(23,59,59)->format('Y-m-d H:i:s')])
->pluck('id')
->toArray();
$itemsIds = implode(" ", $itemsIds);
Mail::queue(new ItemsExpiryEmail($itemsIds));
// If you are not using queue, just replace `queue` with `send` in above line
}
Mailable 发送邮件。
i) 运行下面的命令创建一个mailable
php artisan make:mail ItemsExpiryEmail
ii) 在 mailable 中,编写您的代码。下面给出了示例代码,您可以在邮件视图中使用 $this->itemIds
,因为它是一个 public 变量。
class ItemsExpiryEmail extends Mailable
{
use Queueable, SerializesModels; // don't forget to import these.
public $itemIds;
public function __construct($itemIds)
{
$this->itemIds = $itemIds;
}
public function build()
{
return $this->view('emails.orders.shipped');
return $this->to('test@example.com', 'Admin')
->subject('Subject of the mail')
->view('emails.adminNotification'); // adminNotification will be the view to be sent out as email body
}
}
- 此命令需要每天使用Cornjob执行。
试试这个,我相信这会有所帮助。如果您有任何问题,请告诉我。
项目table中有很多项目,项目table中有一个过期日期列。我只想在每个项目提前一个日期过期之前每天收到推送通知(过期日期彼此不同,可以有一个过期日期到多个项目)。我是 laravel 的新手。请帮助我。
您可以在 Laravel 中创建任务计划程序。您可以在此处从其文档中获取更多信息:https://laravel.com/docs/5.8/scheduling
1) 您可以在调度代码中创建登录名。获取明天到期的所有物品,并将物品的详细信息发送到管理员邮箱。
如果您对用户定义的 artisan 命令有一些了解,您还可以实现 scheduling-artisan-commands https://laravel.com/docs/5.8/scheduling#scheduling-artisan-commands。
这可以通过 Laravel task scheduling
简单地完成你需要创建一个custom artisan command喜欢
php artisan make:command SendItemExpiryEmailsToAdmin
在
App\Console\Commands
下你会发现应该创建一个classSendItemExpiryEmailsToAdmin
。i) 首先您需要定义用于从命令行调用的命令的签名。
protected $signature = 'email:send-item-expiry-email-to-admin';
ii) 在同一个 class 的
handle()
中,写下你的逻辑。下面给出了一个示例逻辑。您将需要创建一个 Mailable class 来发送邮件。public function handle() { // To fetch all the items ids which are going to expired today. $itemsIds = Items::whereBetween('expired', [Carbon::now()->setTime(0,0)->format('Y-m-d H:i:s'), Carbon::now()->setTime(23,59,59)->format('Y-m-d H:i:s')]) ->pluck('id') ->toArray(); $itemsIds = implode(" ", $itemsIds); Mail::queue(new ItemsExpiryEmail($itemsIds)); // If you are not using queue, just replace `queue` with `send` in above line }
Mailable 发送邮件。
i) 运行下面的命令创建一个mailable
php artisan make:mail ItemsExpiryEmail
ii) 在 mailable 中,编写您的代码。下面给出了示例代码,您可以在邮件视图中使用
$this->itemIds
,因为它是一个 public 变量。class ItemsExpiryEmail extends Mailable { use Queueable, SerializesModels; // don't forget to import these. public $itemIds; public function __construct($itemIds) { $this->itemIds = $itemIds; } public function build() { return $this->view('emails.orders.shipped'); return $this->to('test@example.com', 'Admin') ->subject('Subject of the mail') ->view('emails.adminNotification'); // adminNotification will be the view to be sent out as email body } }
- 此命令需要每天使用Cornjob执行。
试试这个,我相信这会有所帮助。如果您有任何问题,请告诉我。