laravel get员工已被聘用n个月

xxhby3vn  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(373)

假设在我的employee表中有一列'hire\u date',我希望在'hire\u date'前找到任期为1-3个月的员工,或者仅仅是3个月大的员工。
我试过这个:

Employee::whereDate('hire_date', '<=', Carbon::now()->subMonths(3))
          ->orderBy('hire_date', 'desc')
          ->get();

但它会把所有的员工都送回来。
我打印了原始查询,它只是从当前日期返回3个月,然后获取记录。

date(`hire_date`) <= 2020-02-22 //whereDate('hire_date', '<=', Carbon::now()->subMonths(3)

我做错什么了?有什么办法可以做到这一点吗?
例如:jhon一名员工于2020年2月1日被一家公司录用。所以当他在公司工作满3个月后,我想拿他的记录做点什么。

3qpi33ja

3qpi33ja1#

所以对于每个月的第一天和最后一天雇佣的所有人来说

Employee::whereDate('hire_date', '>=', Carbon::now()->subMonths(3)->firstOfMonth())
          ->whereDate('hire_date', '<=', Carbon::now()->subMonths(3)->lastOfMonth())  
          ->orderBy('hire_date', 'desc')
          ->get();

以便

date(`hire_date`) <= '2020-02-1' AND date(`hire_date`) >= '2020-02-29'
pdsfdshx

pdsfdshx2#

问题:一名员工于2020年2月1日受雇于一家公司。所以当他在公司工作满3个月后,我想拿他的记录做点什么。
解决问题的办法是,

$datetime = new DateTime('NOW'); //Current date
$datetime->modify('- 3 months'); //Date before 3 months
$backDate = datetime->format('Y-m-d'); //Format date

$employees = Employee::whereDate('hire_date', $backDate)
                          ->orderBy('hire_date', 'desc')
                          ->get();

相关问题