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



我需要从数据库中的 product_name列中以我的表单中的选项列表生成一个选项列表。我在刀片模板中这样做:

<select name="product" >
    <option value="" disabled>Click to select</option>
    @foreach ($products as $product)
	<option value="{{$product->product_name}}">{{$product->product_name}}</option>
	@endforeach
</select>

,控制器如下:

public function index()
{
    $products = Product::all();
    return view('products.index', compact('products'));
}

到目前为止,这已经运行良好,但是随着产品范围的增长,我的数据库中有越来越多的product_name行,因为每一行的描述都是唯一的,而不是其名称。因此,我的形式有一些重复的选项。

我知道Laravel有一种unique()收集方法。在这种情况下,在@foreach的每次迭代中,我都会获得一个字符串作为选项,因此不能使用unique()

Laravel中还有哪些其他方法可以过滤重复的数据?

您可以为产品名称和产品说明列进行查询,然后获取结果 -

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'));
}

用订单更新了查询。

尝试使用pluck;

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'));
}
public function index()
{
    $products = Product::pluck('product_name', 'product_name')
                       ->toArray();
    return view('products.index', compact('products'));
}

将返回唯一的产品名称

相关内容

最新更新