Так, например, представьте себе столбец таблицы с именем start_date. и еще один с именем end_date
Код: Выделить всё
start_date | end_date getAllYears() should return =>
[1983, 1984, 1985, 1986, 1987,
1999, 2000, 2001, 2002, 2003,
..., 2016]
1999-05-09 | 2002-04-03
1983-03-12 | 1987-09-23
2001-02-12 | 2016-11-27
МОЙ НЕЭФФЕКТИВНЫЙ МЕТОД который мало использует Lumen/Laravel< /em>
Код: Выделить всё
public function getAllYears(){
$dates = $this->model->select('data_ini', 'data_fim')->get();
$results = [];
foreach ($dates as $obj){
$carbonBegin = Carbon::createFromDate($obj->data_ini->year);
$carbonEnd = Carbon::createFromDate($obj->data_fim->year);
if($carbonEnd->year === 9999){
$carbonEnd->year = date('Y');
}
$carbonEnd->year++;
// Simple method that runs a DatePeriod method
$dateRange = $this->helper->createDateRange($carbonBegin, $carbonEnd);
$results = array_merge($results, $dateRange);
}
sort($results);
$cleanYears = array_unique($results);
if ($cleanYears == null)
return response()->json(['error' => true, 'errorCode' => '1008', 'message' => "No years found!"]);
else
return response()->json(['error' => false, 'years' => $cleanYears]);
}

ПРИМЕЧАНИЕ. Использование DB:raw запрещено, поскольку мой TL запретил мне использовать его где-либо в API< /strong>
Подробнее здесь: https://stackoverflow.com/questions/369 ... en-laravel