【问题标题】:Laravel - Calculate minimum value from multiple fields in controllerLaravel - 从控制器中的多个字段计算最小值
【发布时间】:2018-04-27 11:07:30
【问题描述】:

我想从一组表单域中计算最小值。 我有一对多的关系,一家商店可以有很多商品,而且运行良好,没有任何错误。

我的表单

<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) 时,它完全是空白的。我在这里错过了什么?

【问题讨论】:

  • 您是如何获得$id 的?
  • 分享你的路线route('form_submit') ?
  • $price_group 应该是一个集合,min 函数如何找到对象中的最小值?
  • 不清楚$id 的传递方式
  • 那么min(request('price'))?

标签: laravel eloquent query-builder


【解决方案1】:

我觉得只是……

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

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

并看一下关系的急切加载。好多了。

【讨论】:

    【解决方案2】:

    我通过@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();
    

    }

    【讨论】:

      猜你喜欢
      • 2015-12-03
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2019-04-22
      • 1970-01-01
      相关资源
      最近更新 更多