如何对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
表仍然为空。
我的提要历史记录
我的inventories
表
它应该是ID 1,将是144,但它会创建新条目。请帮助
答案 0 :(得分:3)
在运行req.stream
命令之前,您返回了Inventory::firstOrCreate([...])
。
只需删除$feed
语句即可。
return