@gomer1726

Как на в vue получить доступ к методам моделя laravel?

На ларавель использую vue и столкнулся с такой проблемой.
Извлекаю через axious допустим данные модели
public function getPosts()
  {
     $posts = Post::all();
     return response()->json([
        'posts' => $posts
     ]);
  }

В компоненте vue все эти данные есть все ок
Но вот допустим у меня в модели есть свой метод кастомный
public function thumb()
  {
     return 'images/thumb/'.$this->img; 
  }

как вызвать этот метод во vue?
{{ note.thumb() }}
так не получится ведь
какие есть варианты?
Не надо писать что путь к изображению можно и во vue поставить, это я знаю но у меня много кастомных методов, с различной логикой. Спасибо
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
getThumbAttribute() + protected $appends = ['thumb']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@jazzus
LAravel Resource
Нужно сделать
php artisan make:resource PostResource
В этом файле прописать
public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
           // Метод из модели
            'thumb' => $this->thumb(),
        ];
    }

И в контроллере в шапке подключаем use App\Http\Resources\PostResource as PostResource;
и передаем json в методе
public function getPosts()
  {
     $posts = Post::all();
     return PostResource::collection($posts); 
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы