Как исправить: углерод не может быть преобразован в Int - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть функция, чтобы получить дни, оставшиеся до даты начала. Я использую Carbon для обработки этого в моей модели следующим образом:

    public function getDaysRemainingForFirstPaymentAttribute()
    {
        if (Carbon::createFromTimestamp($this->trip_start_date)->subDays(150) >= (Carbon::now())) {
            return 'Due on'. ' ' .Carbon::parse($this->trip_start_date)->subDays(150)
            ->format('m-d-Y').' | '.Carbon::now()
            ->diffInDays(Carbon::create($this->trip_start_date)
            ->subDays(150), false) . ' ' . 'days';
        } else {
            return 'Due Now';
        }
    }
//IN MY IF, I have tried:
//if (Carbon::create(...
//if (Carbon::parse(...

Когда ID ie Дамп на $this->trip_start_date Я получаю следующую дату:

Illuminate\Support\Carbon @1582347600 {#1006 ▼
  date: 2020-02-22 00:00:00.0 America/New_York (-05:00)
}

Тогда моя ошибка:

Углерод не может быть преобразован в int

1 Ответ

1 голос
/ 12 февраля 2020

У вас уже есть $this->trip_start_date в качестве экземпляра Carbon, и вам не нужно использовать Carbon::createFromTimestamp:

if ($this->trip_start_date->subDays(150) >= Carbon::now()) {
    return 'Due on'. ' ' .$this->trip_start_date->subDays(150)
            ->format('m-d-Y').' | '.Carbon::now()
            ->diffInDays($this->trip_start_date
            ->subDays(150), false) . ' ' . 'days';
}

Вы также можете использовать Сравнение углерода Функции:

if ($this->trip_start_date->subDays(150)->gte(Carbon::now())) {
    return sprintf("Due on %s | %s days",
        $this->trip_start_date->subDays(150)->format('m-d-Y'),
        Carbon::now()->diffInDays($this->trip_start_date->subDays(150), false)
    );
}
...