php - 为年龄计算创建一个 cron 作业
问题描述
我使用命令创建了一个名为“cronAge”的年龄计算 cronjob
php artisan make:command cronAge
以下是我的员工模型:
class Employee extends Model
{
protected $primaryKey = 'tag_no';
public $incrementing = false;
protected $fillable = [
'tag_no',
'emp_type',
'age',
'date_of_birth',
];
}
我打算每月给 cronjob 打电话。
protected function schedule(Schedule $schedule)
{
$schedule->command('cronAge')
->monthly();
}
这是我的功能:它不是工作代码。它只显示了计算年龄的逻辑。
public function handle()
{
$emp= new Employee();
$today = new Date();
$birth_day = $emp->date_of_birth;
if ($today.getFullYear() - $birth_day.getFullYear() == 1) {
if ($today.getMonth() == $birth_day.getMonth()
&& $today.getDate() == $birth_day.getDate()) {
$emp->age = $emp->age+1;
}
}
}
那么如何在函数中实现我的逻辑。是逻辑仪式吗?请帮助我。我是这个 cronjob 主题的新手,我不知道。
解决方案
我找到了解决方案。最好的方法是使用 Carbon 库解析 date_of_birth 字段来计算年龄。代码如下。
class Employee extends Model
{
protected $primaryKey = 'tag_no';
public $incrementing = false;
protected $fillable = [
'tag_no',
'emp_type',
'date_of_birth',
];
public function getAgeAttribute()
{
return Carbon::parse($this->attributes['date_of_birth'])->age;
}
}
我们也不需要表中的年龄字段。我们可以使用 Carbon 库查找年龄。
如果$emp
是传递给您的view.blade.php的变量,则可以使用以下方式显示年龄:
{{ $emp->age }}
这样就可以做到了。
推荐阅读
- c# - 通过 IIS 10 浏览 aspx 页面和目录访问 aspx 页面
- css - 堆叠的自定义进度
- mysql - 转换 MySQL 的字符长度
- jquery - 如何在 JQuery 自动完成中开始精确匹配?
- haskell - 如何使用 data.validation 编写错误
- javascript - 如何根据节点属性在 Angular Material 平面树中渲染特定的树节点?
- c# - Gsmcomm 可以打开端口但返回没有电话连接
- regex - 匹配行中的连续术语并忽略空格
- node.js - 用 Jest 模拟条纹
- javascript - 尽管 cpanel 中的用户名和密码正确,但页面未重定向