Я пытаюсь выбрать коллекцию данных из диапазона, используя дату в качестве столбца сортировки. Но проблема в том, что дата в моей таблице сохраняется как строка varchar.
ПРИМЕЧАНИЕ. Тип поля varchar должен оставаться неизменным, поскольку он используется какой-либо неосновной, устаревшей кодовой базой, и я прерву службу, если изменить ее на тип даты.
Я пытался разыграть его, но он не работает.
Это код в контроллере
switch ($range) {
case 'thisWeek':
$start = Carbon::now()->startOfWeek()->format('d-m-y');
$end = Carbon::now()->endOfWeek()->format('d-m-Y');
break;
case 'thisMonth':
$start = Carbon::now()->startOfMonth()->format('d-m-Y');
$end = Carbon::now()->endOfMonth()->format('d-m-Y');
// dd($start, $end);
break;
case 'last90Days':
$start = Carbon::now()->format('d-m-Y');
$end = Carbon::now()->subDays(90)->format('d-m-Y');
// dd($start, $end);
break;
case 'last30Days':
$start = Carbon::now()->format('d-m-Y');
$end = Carbon::now()->subDays(30)->format('d-m-Y');
break;
case 'year':
$start = Carbon::now()->format('d-m-Y');
$end = Carbon::now()->year;
$end = "31-12-". $end;
break;
// case 'all':
// $route = $name .".". "index";
// return redirect()->Route($route);
default:
session()->flash("alert-danger", "no range selected");
return redirect()->back();
break;
}
if($name=="activitylog"){
// return $start . ' <br>' . $end;
$logs = Payment::where("payDate", '<', $start)->where("payDate", ">", $end)->
orderBy("payDate", "DESC")->
paginate(20);
}
else{
$logs = Payment::where("description", $description[$name])->
where("payDate", '=<', $start)->where("payDate", ">=", $end)->
orderBy("payDate", "DESC")->
paginate(20);
модель:
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class Payment extends Model
{
protected $table = "payments";
public $timestamps = false;
protected $cast = ["payDate"=> "DATE"];
}
Когда пользователь делает запрос на любой из диапазонов, я хочу сравнить и дать ответ.
изображение для конфигурации базы данных выше
и структура ниже