Я предвосхищу это тем фактом, что я невероятно новичок в Laravel и Vue, поэтому, пожалуйста, будьте милы:)
Также ... Я нашел это: https://github.com/cretueusebiu/laravel-vue-spa и установилэто хорошо, и я строю поверх него, поэтому способ, которым я пытаюсь его построить, состоит в том, чтобы продолжать строить так, как он был настроен.
Существует таблица пользователей, и я могу зарегистрироватьпользователь и логин как сказал пользователь.Я создал таблицу клиентов, которая принадлежит таблице пользователей (отношение один ко многим) и может успешно сохранять данные в этой таблице и связывать ее с вошедшим в систему пользователем ... все хорошо.
Моя проблематеперь извлекаем эти сохраненные данные во вторую таблицу.
Способ, которым я бы извлек данные пользователя, вошедшего в систему, просто ссылаясь на него как {{user}}, а затем, если бы я хотел быть более конкретным, просто сказавчто-то вроде {{user.id}} в разделе шаблонов файла Vue.
В разделе сценариев файла Vue соответствующие биты (я думаю), которые устанавливают эту переменную:
import { mapGetters } from 'vuex';
export default {
middleware: 'auth',
computed: mapGetters({
user: 'auth/user'
}),
methods:{
async addClient(){
// Add the client.
const { data } = await this.clientForm.post('/api/addclient');
}
}
}
Функция addClient работает и сохраняет клиента в нужной таблице, используя php artisan tinker (и инструментальные средства mysql). Я определил, что отношение один ко многим работает правильно и данные сохраняются правильно.
В качестве примечания я удалил часть данных сценария, так как не думаю, что она имеет отношение к вопросу иэта часть работает нормально.
Я пришел к выводу, что mapGetters - это то, что устанавливает переменную {{user}}, поэтому теперь мне нужно знать, как сделать то же самое для чтения из моей таблицы клиентов..
Понятия не имею, для чего предназначен бит "auth / user" внутри функции вычисляемых картгетеров.
После просмотра файлов и чтения битов на картжетах, я нашелфайл, содержащий следующее (и добавил немного для клиентов к нему, но я не совсем уверен, что он делает)
import axios from 'axios'
import Cookies from 'js-cookie'
import * as types from '../mutation-types'
// state
export const state = {
user: null,
clients: null,
token: Cookies.get('token')
}
// getters
export const getters = {
user: state => state.user,
clients: state => state.clients,
token: state => state.token,
check: state => state.user !== null
}
// mutations
export const mutations = {
[types.SAVE_TOKEN] (state, { token, remember }) {
state.token = token
Cookies.set('token', token, { expires: remember ? 365 : null })
},
[types.FETCH_USER_SUCCESS] (state, { user }) {
state.user = user
},
[types.FETCH_USER_FAILURE] (state) {
state.token = null
Cookies.remove('token')
},
[types.LOGOUT] (state) {
state.user = null
state.token = null
Cookies.remove('token')
},
[types.UPDATE_USER] (state, { user }) {
state.user = user
}
}
// actions
export const actions = {
saveToken ({ commit, dispatch }, payload) {
commit(types.SAVE_TOKEN, payload)
},
async fetchUser ({ commit }) {
try {
const { data } = await axios.get('/api/user')
commit(types.FETCH_USER_SUCCESS, { user: data })
} catch (e) {
commit(types.FETCH_USER_FAILURE)
}
},
updateUser ({ commit }, payload) {
commit(types.UPDATE_USER, payload)
},
async logout ({ commit }) {
try {
await axios.post('/api/logout')
} catch (e) { }
commit(types.LOGOUT)
},
async fetchOauthUrl (ctx, { provider }) {
const { data } = await axios.post(`/api/oauth/${provider}`)
return data.url
}
}
Файл типов устанавливает константы со строками с тем же именем, что и имя константы.
Я настроил маршруты для получения и получения данных таким образом, но без особой удачи ... в api.php:
Route::group(['middleware' => 'auth:api'], function () {
Route::get('/clients', 'ClientsController@show');
});
и в этой функции я просто возвращаю строку впосмотрим, смогу ли я заставить его работать, но я даже не захожу так далеко ... Каждый раз, когда я пытаюсь воспроизвести информацию о пользователе, я получаю ошибку vuex.
На самом деле никакой информации нетЯ могу найти в Интернете, как получить информацию таким образом из таблицы красноречивых отношений с помощью vue таким образом, поэтому я прибегаю к вопросу здесь.
Я пытался дать как можно больше информации, но, возможно,что-то забыл, так как этот вопрос стал немного затянутым .... Я предполагаю, что моя проблема связана с vuex, так как это ошибка, при которой консоль регистрируется нормально.Пожалуйста, не стесняйтесь задавать больше вопросов, если вы чувствуете, что мне не хватает какой-либо информации.
Так что мой вопрос ... как мне таким же образом извлечь данные из таблицы отношений один ко многим для этого конкретного пользователячто пользовательская информация извлекается?Это вообще возможно?Они сказали, что Вью так хорошо идет рука об руку с Ларавеллом, но я просто не могу разобраться с этим.