[英]Laravel query - SQL: Get records start new period today
我被困在 Laravel 查询中。 请看一看,让我知道任何线索或解决方案。 谢谢你。
这是我的问题。
现在:2019-12-20。
我有一个模型People有这样一张桌子:
[
{
id: 1,
type: 'employee',
created_at: '2019-11-20',
},
{
id: 2,
type: 'employee',
created_at: '2019-09-20',
},
{
id: 3,
type: 'employee',
created_at: '2019-11-25',
},
{
id: 4,
type: 'ceo',
created_at: '2019-11-20',
},
{
id: 5,
type: 'cfo',
created_at: '2019-11-27',
},
]
我必须每月为员工付款,恰好是第 30 天(期限为 30 天)。
所以我的想法是获取记录:
employee
。这是我到目前为止的代码:
$people = People::where('type', 'employee')->get();
foreach ($people as $key => $person) {
$diff_in_days = Carbon::parse($person->created_at)->diffInDays(Carbon::now()) % 30;
if ($diff_in_days === 0) {
// paid for this person.
}
}
我得到了结果:
[
{
id: 1,
type: 'employee',
created_at: '2019-11-20',
},
{
id: 2,
type: 'employee',
created_at: '2019-09-20',
},
]
我想知道有什么方法可以在第一个查询中使用 fit created_at
获取记录。
我想它可能看起来像这样。
$people = People::where('type', 'employee')
-> // some codes to compare: (now - created) % 30 === 0
->get();
foreach ($people as $key => $person) {
// paid for this person.
}
谢谢大家。
你可以试试 -
->whereRaw('DATEDIFF(now(), created_at) = 30')
对于根据评论的其他条件 -
DATEDIFF(NOW(), created_at) > 60
DATEDIFF(NOW(), created_at) > 90
DATEDIFF(NOW(), created_at) > 60 AND DATEDIFF(NOW(), created_at) <= 90
这样的事情可能是:
$people = People::where('type', 'employee')
->whereRaw('DATEDIFF(DAY, GETDATE(), created_at) = 30')
->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.