Можно ли получить данные связанной модели внутри текущей модели в 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