Можно ли получить данные связанной модели внутри текущей модели в Laravel?

Я создаю приложение Laravel, которое использует рекурсивное конструирование URL. И я хочу знать, возможно ли получить доступ к данным модели, связанной с hasone, внутри модели, чтобы вернуть созданный URL-адрес непосредственно в представление без взаимодействия с контроллером.\

public function link(){
    var_dump($this->category());
    $url = ['news'];
    $url[] = $this->category()->url;
    $url[] = $this->url;
    return implode('/',$url);
}

Простой пример кода, как этот, возвращает этот

Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$url (View: /???/resources/views/common/news/full_preview.blade.php) (View: /???/resources/views/common/news/full_preview.blade.php) (View: /???/resources/views/common/news/full_preview.blade.php)

Так есть ли какой-нибудь хороший способ решить это, используя только красноречивые модели, или это возможно только с помощью контроллеров и так далее?

1 ответ

Решение

Ты не должен звонить $this->category() как функция. Функция вызывает отношения, а не связанную модель.

Чтобы получить связанную модель, удалите скобки.

$this->category->url

Вот документы для отношений в Laravel.

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