繁体   English   中英

Laravel 查询 - SQL:获取记录今天开始新时期

[英]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
  • (现在 - created_at)% 30 = 0。

这是我到目前为止的代码:

$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM