Функция laravel: функция в модели должна возвращать экземпляр отношения

Я пытаюсь построить путь для модели на laravel

Я создал функцию в моей модели:

public function path()
{
    return App\Helper\GeneralController::getURL($this);
}

с dd(App\Helper\GeneralController::getURL($this)) test Я получил правильный ответ. (выход - это URL-адрес)

но с учетом вызова: $article->path Я получаю эту ошибку:

App\Article:: path must return a relationship instance.

Что случилось?

Ответ 1

Вы должны назвать это:

$article->path()

Когда вы выполняете $article->path, вы пытаетесь использовать отношения "Ребенок", которых у вас нет.

Ответ 2

Я столкнулся с этой ошибкой, когда забыл написать в модели возврат до отношения!
проверить это сейчас!

Ответ 3

Вы называете отношения.

$article->path

Чтобы вызвать метод, используйте '()', например,

$article->path()

Ответ 4

path() - это метод не элемент объекта, который нужно вызвать как метод

$article->path();

Ответ 5

Я знаю, что на это уже ответили и приняли. Однако, если OP действительно хотел использовать метод доступа к свойству, а не метод, используйте синтаксис "get {property name} Attribute" Laravel для создания пользовательского атрибута.

Вот как это будет выглядеть в данном конкретном случае:

public function getPathAttribute()
{
    return App\Helper\GeneralController::getURL($this);
}

использование этого подходящего "пути" теперь может быть вызвано как атрибут и не будет разрешено для отношения с использованием синтаксиса:

$article->path;