Я хочу вычислить минимальное значение из набора полей формы. У меня есть отношения «один ко многим», когда в одном магазине может быть много товаров, и они работают нормально без каких-либо ошибок.
Моя форма
<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), его вообще пусто. Что мне здесь не хватает?
поделитесь своим маршрутом route('form_submit')?
$ price_group должна быть коллекцией, как функция min найдет min в объекте?
как вы проходите $id не понятно
@madalinivascu Как мне конвертировать? Если я поменял на array($item->price)->where('shop_id', $shop->id); его Call to a member function where() on array
@ C2486 Работает нормально.
используйте toArray() для преобразования коллекции в массив
Извините, эта строка показывает плохое программирование foreach( $items as $item) $item->price = request('price')[$i]; $i++;
@ C2486 Куда добавить? $min = ($item->price)->where('shop_id', $shnp->id)->toArray(); и $min = ($item->price)->toArray()->where('shop_id', $shnp->id)->toArray(); не работают.
Добавьте фигурные скобки к вашей петле foreach.
Хотите минимум request('price')?
Итак, min(request('price'))?
@JonasStaudenmeir Да, это решено.






Я думаю, это просто ...
$items = Item::where('shop_id', $shop->id)->get();
$min = $items->min('price');
И взгляните на нетерпеливую загрузку отношений. Это гораздо лучше.
Я решил это решением @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();
}
как получить
$id?