Используйте Carbon для создания ваших дат:
$fromDate = Carbon::createFromDate($year['yearFrom'], 1, 1)->startOfDay();
$toDate = Carbon::createFromDate($year['yearTo'], 12, 31)->endOfDay();
Тогда в вашем запросе created_at
уже является датой, поэтому:
return Tipico::whereBetween('created_at', [$fromDate, $toDate])->get();
Не забудьте включить Carbon в ваш класс вверху:
use Illuminate\Support\Carbon;
или только
use Carbon\Carbon;
Чтобы получить данные за последние 3 года, можно было бы выполнить запрос, чтобы узнать, за какие годы у вас есть данные. нужно.
Итак, давайте используем yearTo
в качестве ссылки на его и выберем первые 3 года с данными:
$years = Tipico::select(\DB::raw('YEAR(created_at) as years'))
->where('created_at', '<=', $toDate)
->distinct()
->orderByRaw('YEAR(created_at) DESC')
->limit(3)
->get();
Теперь в $years
у вас будет 3 года. Теперь вы можете запустить запрос с этими годами в качестве параметра:
return Tipico::whereIn(\DB::raw('YEAR(created_at)'), $years)->get();
* Не уверен, что вы можете передать $years
напрямую или вам нужно преобразовать в массив. Посмотри.