Laravel - Рассчитать минимальное значение из нескольких полей в контроллере - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу вычислить минимальное значение из коллекции полей формы. У меня отношения один ко многим, когда в одном магазине может быть много товаров и все работает нормально, без ошибок.

Моя форма

<form action="{{ route('form_submit') }}" method="post">
 @csrf
 <h3>Item 1</h3>
 <input type="text" name="item[]">
 <input type="text" name="price[]">

//Like this I can add many fields

 <input type="submit">
</form>

Контроллер

public function store(Request $request, $id){
 $shop = Shop::findorfail($id);
 $item = Item::where('shop_id', $shop->id)->get(); //working fine
 $i=0;
 $price = request('price')

  foreach( $items as $item)
  $item->price = request('price')[$i];
  $i++;

 //I tried
  $price_group = collect($item->price)->where('shop_id', $shop->id);
  $min_price = min($price_group);

  $item->save();
}

Маршрут

 Route::post('/{id}', 'Controller@store')->name('form_submit');

Но он не рассчитывает минимальную цену. Когда я dd($min_price), его общее пустое. Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Я решил это с помощью решения @ Jonas . И я делаю это своим ответом.

Контроллер

public function store(Request $request, $id){
$shop = Shop::findorfail($id);
$item = Item::where('shop_id', $shop->id)->get(); //working fine
$i=0;
$price = request('price')

foreach( $items as $item)
$item->price = request('price')[$i];
$i++;

//This works
$min_price = min(request('price'));

$item->save();

}

0 голосов
/ 27 апреля 2018

Я думаю, это просто ...

$items = Item::where('shop_id', $shop->id)->get();

$min = $items->min('price');

И взгляните на стремительную загрузку отношений. Это намного лучше.

...