Laravel 集合中的增量
Increment in Laravel collection
我有一个集合,如果满足条件,我想增加值。我想使用 map()
方法迭代和 return 数组(或集合)的总计数。到目前为止我有这个:
$counts = [
'notChecked' => 0,
'published' => 0,
'total' => 0
];
$this->reviewPhotosRepository->getByHotelId($hotel_id)->map(function($photo) use (&$counts) {
$photo->checked ?: $counts['notChecked']++;
$photo->published ?: $counts['published']++;
$counts['total']++;
});
return $counts;
它有效,但我认为它看起来很奇怪并且不是这样的 'laravelish' 方式。有没有其他更好看的选择?
您可以使用 reduce()
:
而不是 map()
return $this->reviewPhotosRepository
->getByHotelId($hotel_id)
->reduce(function ($carry, $item) {
$carry['notChecked'] += $item['checked'] ? 1 : 0;
$carry['published'] += $item['published'] ? 1 : 0;
$carry['total'] += 1;
return $carry;
}, [
'notChecked' => 0,
'published' => 0,
'total' => 0
]);
好点了吗?嗯,你知道,这只是,就像,你的意见,伙计。
我有一个集合,如果满足条件,我想增加值。我想使用 map()
方法迭代和 return 数组(或集合)的总计数。到目前为止我有这个:
$counts = [
'notChecked' => 0,
'published' => 0,
'total' => 0
];
$this->reviewPhotosRepository->getByHotelId($hotel_id)->map(function($photo) use (&$counts) {
$photo->checked ?: $counts['notChecked']++;
$photo->published ?: $counts['published']++;
$counts['total']++;
});
return $counts;
它有效,但我认为它看起来很奇怪并且不是这样的 'laravelish' 方式。有没有其他更好看的选择?
您可以使用 reduce()
:
map()
return $this->reviewPhotosRepository
->getByHotelId($hotel_id)
->reduce(function ($carry, $item) {
$carry['notChecked'] += $item['checked'] ? 1 : 0;
$carry['published'] += $item['published'] ? 1 : 0;
$carry['total'] += 1;
return $carry;
}, [
'notChecked' => 0,
'published' => 0,
'total' => 0
]);
好点了吗?嗯,你知道,这只是,就像,你的意见,伙计。