Php 获取Laravel 5.2集合中具有列名的唯一值的计数
我试图从我的产品表中获得独特品牌的数量,并从Laravel系列中获得它们的数量 我可以使用产品的特定查询来实现这一点,但我现在使用集合的原因是,我还想获得产品的原产国、使用/新产品的条件,我认为最好使用一个查询的集合,而不是对每个数据进行三个单独的查询 下面的代码可以工作,但没有显示每个独特品牌的数量 这是桌子 这是我的控制器Php 获取Laravel 5.2集合中具有列名的唯一值的计数,php,laravel,laravel-5,laravel-5.2,laravel-collection,Php,Laravel,Laravel 5,Laravel 5.2,Laravel Collection,我试图从我的产品表中获得独特品牌的数量,并从Laravel系列中获得它们的数量 我可以使用产品的特定查询来实现这一点,但我现在使用集合的原因是,我还想获得产品的原产国、使用/新产品的条件,我认为最好使用一个查询的集合,而不是对每个数据进行三个单独的查询 下面的代码可以工作,但没有显示每个独特品牌的数量 这是桌子 这是我的控制器 $products = DB::table('products') ->select('products.*') ->whereNull('produc
$products = DB::table('products')
->select('products.*')
->whereNull('products.deleted_at')
->get();
$BrandCollection = collect($products);
$Brands = $BrandCollection->unique('Brand')->sortBy('Brand')->keyBy('Brand')->pluck('Brand');
所以,我想要的结果是
惠普3
东芝2
联想1
我原以为可以使用concat进行收集,但由于我使用的是Laravel 5.2,我正在寻找其他解决方案。如果您真的想使用没有说服力的收集,可以这样做:
$brandsWithCount = $BrandCollection->groupBy('Brand')->map(function($values) {
return $values->count();
})->sort()->reverse();
$BrandCollection = collect([
['Brand' => 'HP'],
['Brand' => 'HP'],
['Brand' => 'HP'],
['Brand' => 'Toshiba'],
['Brand' => 'Toshiba'],
['Brand' => 'Lenovo'],
]);
例如,如果将$brandCollection设置为:
$brandsWithCount = $BrandCollection->groupBy('Brand')->map(function($values) {
return $values->count();
})->sort()->reverse();
$BrandCollection = collect([
['Brand' => 'HP'],
['Brand' => 'HP'],
['Brand' => 'HP'],
['Brand' => 'Toshiba'],
['Brand' => 'Toshiba'],
['Brand' => 'Lenovo'],
]);
结果将是:
Collection {#372
#items: array:3 [
"HP" => 3
"Toshiba" => 2
"Lenovo" => 1
]
}
正如所料。如果你真的想使用没有说服力的集合,你可以这样做:
$brandsWithCount = $BrandCollection->groupBy('Brand')->map(function($values) {
return $values->count();
})->sort()->reverse();
$BrandCollection = collect([
['Brand' => 'HP'],
['Brand' => 'HP'],
['Brand' => 'HP'],
['Brand' => 'Toshiba'],
['Brand' => 'Toshiba'],
['Brand' => 'Lenovo'],
]);
例如,如果将$brandCollection设置为:
$brandsWithCount = $BrandCollection->groupBy('Brand')->map(function($values) {
return $values->count();
})->sort()->reverse();
$BrandCollection = collect([
['Brand' => 'HP'],
['Brand' => 'HP'],
['Brand' => 'HP'],
['Brand' => 'Toshiba'],
['Brand' => 'Toshiba'],
['Brand' => 'Lenovo'],
]);
结果将是:
Collection {#372
#items: array:3 [
"HP" => 3
"Toshiba" => 2
"Lenovo" => 1
]
}
正如预期的那样。有一个名为CountBy的集合帮助程序,它完全满足您的需要 它会如期而至
#items: array:3 [
"HP" => 3
"Toshiba" => 2
"Lenovo" => 1
]
简单:D有一个名为CountBy的集合帮助程序,它完全满足您的需要 它会如期而至
#items: array:3 [
"HP" => 3
"Toshiba" => 2
"Lenovo" => 1
]
简单:D完美!工作很有魅力。你会如何应用排序?因为-sort'Brand->reverse不能work@user3659497它对我有用,你验证过了吗?排序应该按升序排序,反向排序将反转顺序不知道为什么,但它不起作用,我在groupBy之前添加了排序,并删除了最后一个->排序->反向排序,它现在起作用了$Brands=$BrandCollection->sortBy'Brand'->groupBy'Brand'->mapfunction$values{return$values->count;};感谢上面的代码工作得很好,我可以在视图中添加集合,但我不知道如何在表中显示最终结果,因为@foreach循环只显示数值。我需要显示名称-值对。您是如何显示上面生成的集合的结果的?太好了!工作很有魅力。你会如何应用排序?因为-sort'Brand->reverse不能work@user3659497它对我有用,你验证过了吗?排序应该按升序排序,反向排序将反转顺序不知道为什么,但它不起作用,我在groupBy之前添加了排序,并删除了最后一个->排序->反向排序,它现在起作用了$Brands=$BrandCollection->sortBy'Brand'->groupBy'Brand'->mapfunction$values{return$values->count;};感谢上面的代码工作得很好,我可以在视图中添加集合,但我不知道如何在表中显示最终结果,因为@foreach循环只显示数值。我需要显示名称-值对。您如何显示上面生成的集合的结果?