У меня есть модели Post и Page
В данный момент я получаю URL на показ какой-то сущности (show) исходя из названия их роута:
$postUrl = route('posts.show', $post, false);
$pageUrl = route('pages.show', $page, false);
Но это не очень практично и я хочу делать так:
$postUrl = $post->url();
$pageUrl = $page->url();
// или так
$postUrl = $post->url;
$pageUrl = $page->url;
Это можно сделать, добавив в модели такую функцию:
// в модель post
public function url()
{
return route('posts.show', $this, false);
}
// в модель page
public function url()
{
return route('pages.show', $this, false);
}
Но если у меня сотни моделей? Можно ли как-то сделать так, чтобы не копипастить это в каждую модель, как-то, возможно, отнаследоваться от AbstractModel (или использовав трейт) и чтобы ларавель сама возвращала правильное название роута?