(Laravel)如何将整数列总计并发送到另一个表?

时间:2018-12-03 13:50:06

标签: php database laravel eloquent laravel-query-builder

如何对feeds表中具有相同cycle_id,type和user_id的数量求和,并且数量,cycle_id,type和user_id的总和将传递到inventories表?

feeds

    $table->increments('id');
    $table->date('date_input');
    $table->string('delivery_number');  
    $table->string('type');
    $table->integer('quantity');
    $table->unsignedInteger('cycle_id');  
    $table->unsignedInteger('user_id');
    $table->timestamps();

inventories

 $table->increments('id');
            $table->string('type');
            $table->integer('overall_quantity');
            $table->unsignedInteger('cycle_id');  
            $table->unsignedInteger('user_id');
            $table->timestamps();

数量的总和将传递到total_quantity。
feeds表中的类型将传递到inventories表中的类型。
feeds表中的cycle_id将传递到inventories表中的cycle_id。
feeds表中的user_id将传递到inventories表中的user_id。

如果在库存表中不存在is条目,则它将创建,但是在inventories表中该条目不存在时,它将添加。

这是我的代码

FeedController.php

  public function store(Request $request)
    {

               //validate
               $this->validate($request, array(
                'date_input' => 'required|date',
                'delivery_number' => 'required|numeric',
                'type' => 'required|max:255',
                'quantity' => 'required|numeric'
             ) );
             $input= Carbon::parse($request->get('date_input'));
             $cycle = Cycle::where('date_of_loading','<=',$input)
             ->where('date_of_harvest','>=',$input)
             ->first();

             $cycle_id =$cycle->id ?? 0;

        $feed = Feed::create([
            'date_input' => request('date_input'),
            'delivery_number' => request('delivery_number'),
            'type' => request('type'),
            'quantity' => request('quantity'),
            'cycle_id'     => $cycle_id,
           'user_id'     => Auth::id()

        ]);

        return $feed;

        $overall_quantity = Feed::where('cycle_id','=',$cycle_id)
                            ->where('type','=',$request->get('type'))
                            ->sum('quantity');

        Inventory::firstOrCreate([
            'overall_quantity' => $overall_quantity, 
            'type' => request('type'), 
            'cycle_id' => $cycle_id,
            ]);
    }

但是没有用 当我在feeds表中添加数据时,inventories表仍然为空。


新问题

我的提要历史记录

enter image description here

我的inventories

enter image description here

它应该是ID 1,将是144,但它会创建新条目。请帮助

1 个答案:

答案 0 :(得分:3)

在运行req.stream命令之前,您返回了Inventory::firstOrCreate([...])

只需删除$feed语句即可。

return