创建一份计划工作以进行年龄计算

时间:2018-08-21 07:27:02

标签: php laravel-5 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主题的新手,我什么都不是。

1 个答案:

答案 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 }} 

这样可以做到。