Как laravel передать данные из контролера в component vue.js для spa?

Имеется api роут:
Route::namespace('Api')->group(function () {
    Route::get('/articles', 'ArticlesController@index');
});


В контроллере имеется обычная функция, которая возвращает данные статей из бд
public function index()
    {
        return Articles::orderBy('id', 'desc')->Simplepaginate(10);
    }

В обычном view: index.blade я могу вывести данные
$article->description
$article->created_at,
$article->author->name  (Тут через связь в модели можно получить автора статьи)


В компоненте vue делаю axios запрос к api и получаю обратно данные:
export default {
        data() {
            return {
                articles: null,
                error: null,
                loading:false,
            };
        },
        created() {
            this.fetchData();
        },
        methods: {
            fetchData() {
                this.error = this.users = null;
                this.loading = true;
                axios
                    .get('/api/articles')
                    .then(response => {
                        this.loading = false;
                        this.articles = response.data.data;
                    }).catch(error => {
                    this.loading = false;
                    this.error = error.response.data.message || error.message;
                });
            },
        },

Далее вот так вот например можно вывести данные самой статьи во vue
v-for="{description,created_at } in articles" ... {{ description }}

Но как получить данные автора статьи? Аналог ($article->author->name)
Вот так вот не получается articles.author.name или author.name
Заранее спасибо!
  • Вопрос задан
  • 2026 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Далее вот так вот например можно вывести данные самой статьи во vue
v-for="{description,created_at } in articles" ... {{ description }}

А ещё, вы не поверите, можно и иначе:
v-for="a in articles" ... {{ a.description }}
Соответственно, и автор статьи будет доступен как a.author.name (если конечно, вы насчёт структуры данных не обманываете).

Ну или по аналогии с description и created_at делайте, через деструктуризацию (кстати, а кто вам такое посоветовал? - почитали бы вместо этого официальную документацию):
v-for="{ author } in articles"
В это случае author.name будет OK.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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