从 table 获取日期数据,以便我可以用于碳 diffInDays()
fetch date data from the table so that i can use for carbon diffInDays()
我想得到 cycles
table 的 date_start_raise 这样我就可以通过使用碳 diffInDays()
来制作鸡龄
MortalityController.php:
public function store(Request $request)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
) );
$cycle = Cycle::select('id')
->where('date_start_raise','<=',$request->get('date_input'))
->where('date_end_raise','>=',$request->get('date_input'))
->get();
$id = 0;
foreach($cycle as $value){
$id = $value->id;
}
$dateStart = Cycle::select('date_start_raise')
->where('id','=',$id)
->get();
$start = Carbon::now() ;
$input = new Carbon($request->get('date_input'));
foreach($dateStart as $value){
$start = $value->start;
}
$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()
]);
但是我有一个错误说
"Call to a member function diffInDays() on null"
$start 为空。
如何在 cycles
table 中获取 date_start_raise?
试试这个code.It 将在 foreach 本身中保存死亡率
public function store(Request $request)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
) );
$cycle = Cycle::select('id')
->where('date_start_raise','<=',$request->get('date_input'))
->where('date_end_raise','>=',$request->get('date_input'))
->get();
$id = 0;
foreach($cycle as $value){
$id = $value->id;
$dateStart = Cycle::select('date_start_raise')
->where('id','=',$id)
->first();
$start = Carbon::now() ;
$input = new Carbon($request->get('date_input'));
$a = $dateStart->date_start_raise;
$start = Carbon::parse($a);
$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()
]);
}
}
$start = $value->start;
应该是 $start = $value->data_start_raise;
我不知道你的框架是什么,但通常如果你只需要一行,可以尝试 first()、getFirst() 或 get('first'),我认为你可以使用Cycle::select('id', 'data_start_raise')
并在那里添加按条件排序,然后可以保存第二个查询。
我不知道什么是 Carbon::now(),但我认为你的逻辑是这样的:
$date = '2018-12-25';
$obj = Carbon::now();
$offset = $obj->diffInDays($date);
第一次,你定义了 $start = Carbon::now();但是在 foreach 中,您将 $start 覆盖为一个日期字符串,因此 diffInDays() 不是一个字符串的方法。
已更新
<?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'))
->orderBy('date_end_raise desc') //not sure, I've never used laravel
->limit(1) //not sure, I've never used laravel
->get();
$id = 0;
$chickenAge = 0;
foreach($cycle as $value){
$id = $value->id;
}
if ($id) {
$start = new Carbon($value->date_start_raise);
$chickenAge = $start->diffInDays(request('date_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()
]);
}
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) ;
}
这是代码
我想得到 cycles
table 的 date_start_raise 这样我就可以通过使用碳 diffInDays()
MortalityController.php:
public function store(Request $request)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
) );
$cycle = Cycle::select('id')
->where('date_start_raise','<=',$request->get('date_input'))
->where('date_end_raise','>=',$request->get('date_input'))
->get();
$id = 0;
foreach($cycle as $value){
$id = $value->id;
}
$dateStart = Cycle::select('date_start_raise')
->where('id','=',$id)
->get();
$start = Carbon::now() ;
$input = new Carbon($request->get('date_input'));
foreach($dateStart as $value){
$start = $value->start;
}
$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()
]);
但是我有一个错误说
"Call to a member function diffInDays() on null"
$start 为空。
如何在 cycles
table 中获取 date_start_raise?
试试这个code.It 将在 foreach 本身中保存死亡率
public function store(Request $request)
{
$this->validate($request, array(
'date_input' => 'required|date',
'number_of_mortality' => 'required|numeric',
) );
$cycle = Cycle::select('id')
->where('date_start_raise','<=',$request->get('date_input'))
->where('date_end_raise','>=',$request->get('date_input'))
->get();
$id = 0;
foreach($cycle as $value){
$id = $value->id;
$dateStart = Cycle::select('date_start_raise')
->where('id','=',$id)
->first();
$start = Carbon::now() ;
$input = new Carbon($request->get('date_input'));
$a = $dateStart->date_start_raise;
$start = Carbon::parse($a);
$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()
]);
}
}
$start = $value->start;
应该是 $start = $value->data_start_raise;
我不知道你的框架是什么,但通常如果你只需要一行,可以尝试 first()、getFirst() 或 get('first'),我认为你可以使用Cycle::select('id', 'data_start_raise')
并在那里添加按条件排序,然后可以保存第二个查询。
我不知道什么是 Carbon::now(),但我认为你的逻辑是这样的:
$date = '2018-12-25';
$obj = Carbon::now();
$offset = $obj->diffInDays($date);
第一次,你定义了 $start = Carbon::now();但是在 foreach 中,您将 $start 覆盖为一个日期字符串,因此 diffInDays() 不是一个字符串的方法。
已更新
<?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'))
->orderBy('date_end_raise desc') //not sure, I've never used laravel
->limit(1) //not sure, I've never used laravel
->get();
$id = 0;
$chickenAge = 0;
foreach($cycle as $value){
$id = $value->id;
}
if ($id) {
$start = new Carbon($value->date_start_raise);
$chickenAge = $start->diffInDays(request('date_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()
]);
}
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) ;
}
这是代码