Php 在收集过滤器方法内使用where条件-Laravel
我有一个集合,如果它的属性值低于当前月份,我想对其进行筛选。为此,我在collection filter方法中使用whereBetween方法,但它不过滤任何项并按原样返回整个集合 我使用的是Laravel 5.8 这是我的密码 碳日期Php 在收集过滤器方法内使用where条件-Laravel,php,laravel-5,collections,Php,Laravel 5,Collections,我有一个集合,如果它的属性值低于当前月份,我想对其进行筛选。为此,我在collection filter方法中使用whereBetween方法,但它不过滤任何项并按原样返回整个集合 我使用的是Laravel 5.8 这是我的密码 碳日期 public $c_som, $c_eom $this->c_som = Carbon::now('Asia/Kolkata')->startOfMonth(); $this->c_eom = Carbon::now('Asia/Kolkat
public $c_som, $c_eom
$this->c_som = Carbon::now('Asia/Kolkata')->startOfMonth();
$this->c_eom = Carbon::now('Asia/Kolkata')->endOfMonth();
收藏
"cm_revenue_data": [
{
"candidate_full_name": "Dr. Joanne Cruickshank",
"revenue": 1777,
"doj": "2019-11-16",
"is_claw_back": 1,
"claw_back_date": "2019-10-25"
},
{
"candidate_full_name": "Mack Green",
"revenue": 2718,
"doj": "2019-07-28",
"is_claw_back": 1,
"claw_back_date": "2019-10-25"
},
{
"candidate_full_name": "Mrs. Mireille Beer MD",
"revenue": 1118,
"doj": "2019-06-18",
"is_claw_back": 1,
"claw_back_date": "2019-10-25"
},
{
"candidate_full_name": "Phoebe Quigley",
"revenue": 1655,
"doj": "2019-10-10",
"is_claw_back": 1,
"claw_back_date": "2019-11-13"
},
{
"candidate_full_name": "Johnpaul Prosacco",
"revenue": 1312,
"doj": "2019-07-12",
"is_claw_back": 1,
"claw_back_date": "2019-10-25"
},
{
"candidate_full_name": "Alene Moore DVM",
"revenue": 2059,
"doj": "2019-10-11",
"is_claw_back": 0,
"claw_back_date": null
},
{
"candidate_full_name": "Vida Fisher",
"revenue": 1955,
"doj": "2019-09-07",
"is_claw_back": 1,
"claw_back_date": "2019-10-25"
}
]
过滤方法
$cm_revenue_data = $revenue_data->filter(function ($item) {
return $item
->whereBetween('doj', [$this->c_som, $this->c_eom]);
->orWhereBetween('claw_back_date', [$this->c_som, $this->c_eom]);
});
我认为使用
whereBetween()
不太正确,因为这些属性是string
,而som
和eom
是Carbon
的实例
如果您想从集合中获取doj
或回扣日期为当前月份的项目,则只需通过首先将字符串
转换为Carbon
实例来比较该属性
$array = [
[
'doj' => '2019-11-16',
'claw_back_date' => '2019-10-25',
],
[
'doj' => '2019-10-10',
'claw_back_date' => '2019-11-13',
],
[
'doj' => '2019-06-18',
'claw_back_date' => '2019-10-25',
],
];
$now = Carbon::now();
$collection = collect($array)->filter(function ($item) use ($now) {
if (Carbon::createFromFormat('Y-m-d', $item['doj'])->month === $now->month) {
return true;
}
if (Carbon::createFromFormat('Y-m-d', $item['claw_back_date'])->month === $now->month) {
return true;
}
return false;
});
这是当月(11)的收集数据吗?因为看起来可能是最近一个月(10)的数据,所以收集的数据可能是本月的数据,也可能是过去几个月的数据。我要收集所有数据,这些数据的doj
或claw\u back\u date
month是当前月份,我得到了。我问的是:你发布的收藏是本月(11)的,只有“Joanne Cruickshank博士”和“Phoebe Quigley”应该在里面?是的!只有Joanne Cruickshank博士和Phoebe Quigley博士应该在里面