Я уверен, что самым чистым решением было бы убедиться, что laravel знает, какие поля являются полями даты.
Для этого можно использовать мутаторы даты: https://laravel.com/docs/7.x/eloquent-mutators#date -mutators
Если вы go к модели, содержащей начальную дату и конечную дату, вы можете добавить:
Ваша модель:
protected $dates = [
'start_date',
'end_date',
];
Теперь ваши $model->start_date
и $model->end_date
оба класса 'Carbon'.
Затем вы можете использовать метод доступа (https://laravel.com/docs/7.x/eloquent-mutators#defining -an-accessor ):
Ваша модель:
function getFormattedRuntimeAttribute()
{
$start_day = $this->start_date->format('j');
$end_day = $this->end_date->format('j');
$end_month = $this->end_date->format('F');
return "from $start_day to $end_day $end_month";
}
Объясненные буквы даты: https://www.w3schools.com/pHP/func_date_date.asp
Затем в блейде вы можете использовать модель следующим образом:
{{ $model->formatted_runtime }}
Это должно вывести что-то вроде : 'с 1 по 10 марта'
Обратите внимание, что это забавно, когда даты начала и окончания находятся в одном месяце. В противном случае вы укажете неправильную дату начала.
Вы можете обновить ее до:
function getFormattedRuntimeAttribute()
{
$start_day = $this->start_date->format('j');
$start_month = $this->start_date->format('F');
$end_day = $this->end_date->format('j');
$end_month = $this->end_date->format('F');
$start_month = ($start_month == $end_month) ? '' : ' '.$start_month;
return "from $start_day$start_month to $end_day $end_month";
}
Надеюсь, это поможет:)