Ошибка Laravel: вызов функции-члена format () в строке

Я использую Laravel 5.6, и я хочу сделать такой аксессуар в своей служебной модели

public function getRekomtekDateAttribute($value)
{
    return $value->format('d-m-Y');
}

но когда я вызываю {{ $utility->rekomtek_date }}, отображается ошибка, как в заголовке.

Я добавил эту строчку в ту же модель, что и в Ошибка Laravel: вызов функции-члена format () в строке, но все равно не повезло

/**
 * The attributes that should be mutated to dates.
 *
 * @var array
 */
protected $dates = [
    'rekomtek_date'
];

я не знаю что не так. так как я использовал Laravel 5.3, это всегда происходит -_- '

есть ваш rekomtek_date типа DATE в БД? Попробуйте выгрузить $value перед форматированием и убедитесь, что это тип Carbon.

nakov 10.11.2018 00:54

да, я использую $table->date('rekomtek_date'); при миграции

Bang Fady 18.11.2018 17:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
2
3 570
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это потому, что вы пытаетесь использовать format () в строке. Ты должен сделать:

use Carbon\Carbon;
...
public function getRekomtekDateAttribute($value)
{
    return Carbon::parse($value)->format('d-m-Y');
}

Сначала вы можете прочитать немного в документации: laravel.com/docs/5.7/eloquent-mutators#date-mutators добавляет поле в массив $ates, которое передает его экземпляру Carbon. Что-то еще не так, это не решение.

nakov 10.11.2018 00:57

@navok Да, НО преобразование в экземпляр Carbon вступает в силу при попытке доступа к объекту. Например. $ user-> my_date вернет экземпляр Carbon. Но при извлечении внутри аксессора это еще не экземпляр Carbon.

Erick Patrick 10.11.2018 01:08

Его использование неверно, посмотрите на мой ответ. Работает на 100%. Я так много раз этим пользовался.

nakov 10.11.2018 01:15
Ответ принят как подходящий

Вы не должны передавать $value в функцию получения, используйте его так:

public function getRekomtekDateAttribute()
{
    return $this->rekomtek_date->format('d-m-Y');
}

но почему в здесь в части «Определение средства доступа» говорится, что мы определяем средство доступа с помощью этой переменной $ value

Bang Fady 18.11.2018 17:21

@BangFady Да, он хорошо работает со строковым типом, но для даты преобразование в Carbon происходит, когда вы обращаетесь к родительскому элементу поля. Таким образом, ваша ошибка не говорит о том, что $value пуст или имеет значение NULL, но на самом деле он имеет тип String, а строка не имеет метода форматирования.

nakov 18.11.2018 20:58

Другие вопросы по теме