我已经使用命令创建了一个名为“ 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主题的新手,我什么都不是。
答案 0 :(得分:0)
我找到了解决方案。最好的方法是使用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 }}
这样可以做到。