Laravel 在刀片模板中生成选项列表时使用unique()方法

Laravel 在刀片模板中生成选项列表时使用unique()方法,laravel,laravel-blade,Laravel,Laravel Blade,我需要从数据库中名为product\u name的列生成表单中的选项列表。我在刀片模板中这样做,如下所示: 单击以选择 @foreach($products as$product) {{$product->product_name} @endforeach 您可以对产品名称和产品描述列的查询进行分组,并获取如下结果- public function index() { $products = Product::select('product_name', 'product_descr

我需要从数据库中名为
product\u name
的列生成表单中的选项列表。我在刀片模板中这样做,如下所示:


单击以选择
@foreach($products as$product)
{{$product->product_name}
@endforeach

您可以对产品名称和产品描述列的查询进行分组,并获取如下结果-

public function index()
{
    $products = Product::select('product_name', 'product_description')
        ->orderBy('product_name') 
        ->groupBy('product_name', 'product_description')
        ->get();

    return view('products.index', compact('products'));
}
使用order by更新查询。

尝试使用Pull

public function index()
{
    //Use pluck for selecting only specific column. You can take multiple columns as 
    well.
    $product_names = Product::pluck('product_name');
    $products = array_unique($product_names);
    return view('products.index', compact('products'));
}

这将返回唯一的产品名称

请使用控制器代码更新您的问题,以便我们可以更好地了解问题。您好!我已使用相关的控制器代码更新了我的问题。您可以使用
distinct()
。i、 e.
$products=Product::query()->distinct()->get()
$products=Product::query()->distinct('Product_name')->get()感谢您的反馈。我刚试过这个。我能够成功地删除重复的产品名称。如果我要对它进行排序,我只需添加->sort(),对吗?你可以添加这个来对结果进行排序-->orderBy('column','desc')我已经更新了答案,请看一看,如果它不起作用,请告诉我。它工作得很好!非常感谢你!我猜
unique()
不是处理大多数此类查询的正确方法。如果它对您有效,请将其标记为答案。当只需要一列作为唯一字段时,可以使用distinct。
public function index()
{
    $products = Product::pluck('product_name', 'product_name')
                       ->toArray();

    return view('products.index', compact('products'));
}