Запустите некоторые вычисления, а затем обновите данные в Laravel 5.2.

Вот очень простой метод сохранения контроллера продукта. Я делаю некоторые вычисления, а затем сохраняю данные в базе данных. Но при обновлении данных мне нужно снова запустить эти вычисления, а затем сохранить данные.

Я пробовал несколько способов, но не получаю ничего, кроме сообщений об ошибках, так как я новичок в Laravel. Как я могу написать правильный метод обновления?

public function store(Request $request)
    {
        //vat and profit calculations
        $vat           = $request->vat;
        $buying_price  = $request->buying_price;
        $selling_price = $request->selling_price;
        $total_price   = $buying_price+($buying_price*$vat/100);
        $profit        = $selling_price-$total_price;

        $product = Products::create([
            'product_name'          => $request->product_name,
            'buying_price'          => $request->buying_price,
            'selling_price'         => $request->selling_price,
            'vat'                   => $request->vat,
            'total_price'           => $total_price,
            'profit'                => $profit,
            ]);
        return redirect("Product/{$product->id}");
       }

Метод обновления (который не работает, как я ожидаю):

public function update(Request $request, $id)
    {   
        $vat           = $request->vat;
        $buying_price  = $request->buying_price;
        $selling_price = $request->selling_price;
        $total_price   = $buying_price+($buying_price*$vat/100);
        $profit        = $selling_price-$total_price;

        $product = Products::findOrFail($id);
        $product = Products::update([
            'product_name'          => $request->product_name,
            'buying_price'          => $request->buying_price,
            'selling_price'         => $request->selling_price,
            'vat'                   => $request->vat,
            'total_price'           => $total_price,
            'profit'                => $profit,
            ]);
       return redirect("Product/{$product->id}");

      /*  Basic update system but this does not update the total_price and profit column
          $input = $request->all();
          $product = Products::findOrFail($id);
          $product->update($input);
          return redirect("Product/{$product->id}"); */
     }

person Noob Coder    schedule 13.01.2016    source источник
comment
Здесь нет сообщений об ошибках, поэтому в этом вопросе явно отсутствует минимальный воспроизводимый пример. В любом случае, это, вероятно, слишком широко, поэтому его следует отложить.   -  person halfer    schedule 02.02.2018


Ответы (2)


Должно быть так...

public function update(Request $request, $id){
   $vat           = $request->vat;
   $buying_price  = $request->buying_price;
   $selling_price = $request->selling_price;
   $total_price   = $buying_price+($buying_price*$vat/100);
   $profit        = $selling_price-$total_price;

   $product = Products::findOrFail($id);
   $product->product_name            = $request->product_name;
   $product->product_category_id     = $request->product_category_id;
   $product->product_type_id         = $request->product_type_id;
   $product->product_description     = $request->product_description;
   $product->product_weight          = $request->product_weight;
   $product->buying_price            = $request->buying_price;
   $product->selling_price           = $request->selling_price;
   $product->vat                     = $request->vat;
   $product->total_price             = $total_price;
   $product->profit                  = $profit;
   $product->in_stock                = $request->in_stock;
   $updated_product = $product->save();

   if(isset($updated_product) && $updated_product != '') {
      return redirect("Product/".$id);
   }
}
person Ye Lwin Soe    schedule 13.01.2016
comment
я получаю сообщение об ошибке синтаксическая ошибка, неожиданная '=›' (T_DOUBLE_ARROW) строка $product->product_name =>$request->product_name; выдает исключение Fatal error @YLS - person Noob Coder; 13.01.2016

Пожалуйста, попробуйте это.

 public function update(Request $request, $id)
 {   
    $vat           = $request->vat;
    $buying_price  = $request->buying_price;
    $selling_price = $request->selling_price;
    $total_price   = $buying_price+($buying_price*$vat/100);
    $profit        = $selling_price-$total_price;

    $product = Product::where('id', $id)->first();
    $product->product_name = $request->product_name;
    $product->buying_price = $request->buying_price;
    $product->selling_price = $request->selling_price;
    $product->vat = $request->vat;
    $product->total_price = $total_price;
    $product->profit = $profit;
    $product->save();

   return redirect("Product/{$product->id}");

  /*  Basic update system but this does not update the total_price and profit column
      $input = $request->all();
      $product = Products::findOrFail($id);
      $product->update($input);
      return redirect("Product/{$product->id}"); */
 }
person Vijay Sebastian    schedule 13.01.2016