到目前为止,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}} 时,它​​为我提供了完美的用户对象,包括 idname 等信息,但是当我执行 {{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/

10-12 01:12