Главная/Статьи/Laravel: Создание статических методов в модели
Laravel

Laravel: Создание статических методов в модели

Разработчики, привыкшие к другим фреймворкам, часто сталкиваются с проблемой при попытке реализовать логику в моделях Laravel.

Описание проблемы

При создании обычного метода в классе модели и попытке использования его через $this приложение выдаёт ошибку:

LogicException App\\Object::getCover must return a relationship instance

Laravel требует соблюдать определённые соглашения при именовании методов.

Решение

Правильный подход заключается в использовании специального формата именования: getАтрибутAttribute(). Это автоматически преобразует метод в доступное как атрибут свойство модели.

class Object extends Model
{
    public function getCoverAttribute()
    {
        $image = explode(',', $this->image);
        return $image[0];
    }
}

Использование

После определения такого метода данные становятся доступны как простой атрибут: $node->cover вместо вызова метода $node->getCover().

Этот подход позволяет обрабатывать данные модели и использовать их как атрибуты в контроллерах и представлениях.