如何从不同的表中减去两个整数值
How to subtract two integer values from different tables
如何用table中mortalities
中的number_of_mortality的值来减去人口中的table中的population
的值?
例如
循环中有2个数据table
Id 1 -(日期范围从 9 月 3 日到 9 月 28 日)人口 = 3000
Id 2 -(日期范围从 10 月 1 日到 11 月 5 日)人口 = 9000
我的用户想要将一些死亡率放入循环 id 1 ,所以 he/she 进入死亡率模式。
用户输入日期属于周期id 1日期范围。 number_of_mortality的值为25,用户输入数据后,he/she点击添加提交到数据库。
提交后,cycle id 1 的 population 值会减少,应该是 8975 ( 9000 - 25 = 8975)。
这是我的控制器
MortalityController.php(商店)
public function store(Request $request)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
));
$cycle = Cycle::select('id', 'date_start_raise')
->where('date_start_raise','<=',$request->get('date_input'))
->where('date_end_raise','>=',$request->get('date_input'))
->get();
$id = 0;
$chickenAge = 0;
$input= Carbon::parse($request->get('date_input'));
foreach($cycle as $value){
$id = $value->id;
}
if ($id) {
$start = Carbon::parse($value->date_start_raise);
$chickenAge = $start->diffInDays($input) ;
}
return Mortality::create([
'date_input' => request('date_input'),
'number_of_mortality' => request('number_of_mortality'),
'chicken_age' => $chickenAge,
'cause_of_death' => request('cause_of_death'),
'cycle_id' => $id,
'user_id' => Auth::id()
]);
}
我想出了如何使用日期将 mortalities
table 连接到 cycles
table 但 我不知道如何以及在哪里可以我通过使用 number_of_mortality 减去人口 来递减代码。你能帮助我吗?谢谢
MortalityController.php(更新)
public function update(Request $request, $id)
{
$mortality = Mortality::findOrFail($id);
//validate
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
) );
$mortality->update($request->all());
}
MortalityController.php(毁灭)
public function destroy($id)
{
$mortality = Mortality::findOrFail($id);
$mortality->delete();
}
您可以使用decrement()方法。
成功创建死亡率后,您可以减少循环中的人口:
店铺:
public function store(Request $request)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
));
// Make sure you only get the correct cycle here
$cycle = Cycle::where('date_start_raise', '<=', $request->get('date_input'))
->where('date_end_raise', '>=', $request->get('date_input'))
->first();
$chickenAge = 0;
$input= Carbon::parse($request->get('date_input'));
if ($cycle) {
$start = Carbon::parse($cycle->date_start_raise);
$chickenAge = $start->diffInDays($input) ;
}
$mortality = Mortality::create([
'date_input' => request('date_input'),
'number_of_mortality' => request('number_of_mortality'),
'chicken_age' => $chickenAge,
'cause_of_death' => request('cause_of_death'),
'cycle_id' => $cycle->id ?? 0,
'user_id' => Auth::id()
]);
// decrement population after successfully creating the mortality
if ($cycle) {
$cycle->decrement('population', $mortality->number_of_mortality);
}
return mortality;
}
更新:
public function update(Request $request, $id)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
));
$mortality = Mortality::findOrFail($id);
$oldNumberOfMortality = $mortality->number_of_mortality;
// fill the model with the new attributes
$mortality->fill($request->all());
// check if number_of_mortality was changed
if ($mortality->isDirty('number_of_mortality')) {
$cycle = $mortality->cycle;
$difference = $oldNumberOfMortality - $mortality->number_of_mortality;
// check if the difference is positive or negative and increment or decrement
if ($difference < 0) {
$cycle->decrement('population', abs($difference));
} elseif ($difference > 0) {
$cycle->increment('population', $difference);
}
}
$mortality->save();
return mortality;
}
如何用table中mortalities
中的number_of_mortality的值来减去人口中的table中的population
的值?
例如
循环中有2个数据table
Id 1 -(日期范围从 9 月 3 日到 9 月 28 日)人口 = 3000
Id 2 -(日期范围从 10 月 1 日到 11 月 5 日)人口 = 9000
我的用户想要将一些死亡率放入循环 id 1 ,所以 he/she 进入死亡率模式。
用户输入日期属于周期id 1日期范围。 number_of_mortality的值为25,用户输入数据后,he/she点击添加提交到数据库。
提交后,cycle id 1 的 population 值会减少,应该是 8975 ( 9000 - 25 = 8975)。
这是我的控制器
MortalityController.php(商店)
public function store(Request $request)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
));
$cycle = Cycle::select('id', 'date_start_raise')
->where('date_start_raise','<=',$request->get('date_input'))
->where('date_end_raise','>=',$request->get('date_input'))
->get();
$id = 0;
$chickenAge = 0;
$input= Carbon::parse($request->get('date_input'));
foreach($cycle as $value){
$id = $value->id;
}
if ($id) {
$start = Carbon::parse($value->date_start_raise);
$chickenAge = $start->diffInDays($input) ;
}
return Mortality::create([
'date_input' => request('date_input'),
'number_of_mortality' => request('number_of_mortality'),
'chicken_age' => $chickenAge,
'cause_of_death' => request('cause_of_death'),
'cycle_id' => $id,
'user_id' => Auth::id()
]);
}
我想出了如何使用日期将 mortalities
table 连接到 cycles
table 但 我不知道如何以及在哪里可以我通过使用 number_of_mortality 减去人口 来递减代码。你能帮助我吗?谢谢
MortalityController.php(更新)
public function update(Request $request, $id)
{
$mortality = Mortality::findOrFail($id);
//validate
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
) );
$mortality->update($request->all());
}
MortalityController.php(毁灭)
public function destroy($id)
{
$mortality = Mortality::findOrFail($id);
$mortality->delete();
}
您可以使用decrement()方法。
成功创建死亡率后,您可以减少循环中的人口:
店铺:
public function store(Request $request)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
));
// Make sure you only get the correct cycle here
$cycle = Cycle::where('date_start_raise', '<=', $request->get('date_input'))
->where('date_end_raise', '>=', $request->get('date_input'))
->first();
$chickenAge = 0;
$input= Carbon::parse($request->get('date_input'));
if ($cycle) {
$start = Carbon::parse($cycle->date_start_raise);
$chickenAge = $start->diffInDays($input) ;
}
$mortality = Mortality::create([
'date_input' => request('date_input'),
'number_of_mortality' => request('number_of_mortality'),
'chicken_age' => $chickenAge,
'cause_of_death' => request('cause_of_death'),
'cycle_id' => $cycle->id ?? 0,
'user_id' => Auth::id()
]);
// decrement population after successfully creating the mortality
if ($cycle) {
$cycle->decrement('population', $mortality->number_of_mortality);
}
return mortality;
}
更新:
public function update(Request $request, $id)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
));
$mortality = Mortality::findOrFail($id);
$oldNumberOfMortality = $mortality->number_of_mortality;
// fill the model with the new attributes
$mortality->fill($request->all());
// check if number_of_mortality was changed
if ($mortality->isDirty('number_of_mortality')) {
$cycle = $mortality->cycle;
$difference = $oldNumberOfMortality - $mortality->number_of_mortality;
// check if the difference is positive or negative and increment or decrement
if ($difference < 0) {
$cycle->decrement('population', abs($difference));
} elseif ($difference > 0) {
$cycle->increment('population', $difference);
}
}
$mortality->save();
return mortality;
}