Использование метода unique () при создании списка параметров в шаблоне блейда - PullRequest
1 голос
/ 06 марта 2019

Мне нужно создать список параметров в моей форме из столбца с именем 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 для меня, чтобы отфильтровать дублированные данные?

Ответы [ 3 ]

0 голосов
/ 06 марта 2019

Попробуйте использовать 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'));
}
0 голосов
/ 06 марта 2019
public function index()
{
    $products = Product::pluck('product_name', 'product_name')
                       ->toArray();

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

Это вернет уникальные названия продуктов

0 голосов
/ 06 марта 2019

Вы можете сгруппировать свой запрос по столбцу с названием продукта и описанием продукта и получить результат следующим образом:

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

Обновлен запрос с заказом по.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...