如何从数据库中选择以范围(A-Z)开头的属性并将它们存储在一个变量中,以便在Laravel5.2中按字母顺序显示?
这是我的代码,但我无法得到我想要的结果。
for ($char = 'A';$char<= 'Z';$char++)
{
$viewAll = Product::where('p_name' , 'like',$char.'%')->get();
} return view('inventory.index',['product'=>$viewAll]);
答案 0 :(得分:0)
我建议在SQL中对产品进行排序,然后使用Collections groupBy()
按照第一个字母对结果进行分组。
// Get all the products sorted by name
$viewAll = Product::orderBy('p_name')->get();
// Group them by letter
$viewAll = $viewAll->groupBy(function($product) {
return substr($product['p_name'], 0, 1);
});
// resulting array will be
// [
// 'a' => [{p_name: 'apple'}, ...],
// 'b' => [{p_name: 'banana'}, ...],
// 'c' => [...]
// ]