$start = $value->start;
должно быть $start = $value->data_start_raise;
Я не знаю, какой фреймворк для вас, но обычно, если все, что вам нужно, только 1 строка может попробовать 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()
]);
}