到目前为止,Vue2 对我来说一直很好地阅读 eloquent,但除了这一点我很难调试。
Shop-show.vue
<template>
.....
.....
<div class="row">
{{shop.user.id}}
</div>
.....
.....
</template>
<script>
export default{
mounted(){
this.getShop()
},
methods:{
getShop(){
var vm = this
vm.$http.get('/getShop/'+vm.shopId).then((response)=>{
vm.shop = response.data.data.shop
})
},
.....
.....
}
</script>
ShopController.php
.....
.....
public function getShop($id)
{
$shop = Shop::where('id',$id)->with('user')->firstOrFail();
$response = [
'data' => [
'shop' => $shop
]
];
return response()->json($response);
}
.....
.....
web.php
Route::get('/getShop/{id}', 'ShopController@getShop');
在这里,当我在模板中渲染
{{shop.user}}
时,它为我提供了完美的用户对象,包括 id
和 name
等信息,但是当我执行 {{shop.user.id}}
或 {{shop.user.name}}
时,它会控制台记录错误如下错误#1
错误#2
这从来没有发生过,非常奇怪。请帮忙。
最佳答案
当您从 vm.shop
方法(一种异步方法)加载 getShop
时,在填充 vm.shop
之前不会有任何内容,因此最初您会收到此错误。
为防止此错误,您可以在使用之前进行空检查,借助 v-if ,如下所示:
<template>
.....
.....
<div class="row" v-if="shop && shop.user">
{{shop.user.id}}
</div>
.....
.....
</template>
关于eloquent - Vue 2 Laravel 5.3 Eloquent 无法从对象中检索数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41994003/