Отображение связанных данных таблицы в vuejs

Я изучаю vuejs и использую laravel для backend api. У меня есть следующие таблицы

article, article_translations и я упомянул их отношения в их моделях

я создал компонент vue fpr статьи

<template>
    <div>
      <div v-for = "article in articles" :key = "article.articles">
        <h4>{{article.translations}}</h4>
      </div>
    </div>
</template>

<script>
import axios from 'axios'
import { mapGetters } from 'vuex'

    export default {
        layout: 'basic',

        computed: mapGetters({
          locale: 'lang/locale'
        }),
        data: function () {
            return {
                articles: []
            }
        },
        mounted() {
            var app = this;
            console.info(this.locale);
            axios.get('/api/articles')
                .then(response => {
                  // JSON responses are automatically parsed.
                  this.articles = response.data
                })
                .catch(e => {
                  this.errors.push(e)
                })
        }
    }
</script>

это отображает [{"id": 1, "article_id": 1, "title": "Это пример заголовка", "subtitle": "this is a subtitle", "content": "this is the content", "locale": "en", "created_at": null, "updated_at": null}], как ожидалось

Отображение связанных данных таблицы в vuejs

Я хочу отображать статьи в этом формате

  1. статья заголовок статьи
  2. подзаголовок статьи
  3. содержание статьи

В блейде я обычно делаю {{$ article-> article_translations-> title}}, чтобы получить данные связанной таблицы. Как это работает в vue? Как отобразить данные в указанном мною формате.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
2 042
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Судя по тому, что вы опубликовали, атрибуты перевода статьи могут быть такими:

<div v-for = "article in articles" :key = "article.articles">
    <div v-for = "translation in article.translations">
        <h4>{{ translation.title }}</h4>
        {{ translation.subtitle }}
        {{ translation.content }}
    </div>
</div>

В основном добавьте еще один цикл for, так как ваши переводы находятся в массиве. А затем просто отобразите атрибуты.

Большое спасибо. Это именно то, что я искал.

user6780526 17.03.2018 22:16

просто используйте построитель запросов Laravel, внутреннее соединение поможет решить вашу проблему. Это быстрый пример, после чего вы получите коллекцию свойств или свой объект.

объяснение: таблица пользователей получает объект пользователя, таблица людей связана с пользователем столбцом user_id. просто нужно объединить связанные таблицы и получить этот результат

$users = DB::table('people')
        ->join('users', 'users.id', '=' ,'people.user_id')
        ->select('users.*',
            'first_name',
            'last_name',
            'street_address',
            'city',
            'state',
            'contact_phone'
        )->get();

    return response()->json(['data' => $users], 200);

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