【问题标题】:I have 2 records in a database Vue outputs 8 records我在数据库中有 2 条记录 Vue 输出 8 条记录
【发布时间】:2017-05-13 07:18:35
【问题描述】:

我正在使用 Laravel 5 和 Vue JS 构建一个在线赌场。我已经设法自己弄清楚如何为我的赌场输出最近创建的游戏。这是一个基本的掷硬币项目,我已经能够弄清楚如何区分正在进行的游戏和等待玩家加入的游戏。

但是,我创建了一个应用程序,它读取输出到 routes.php 中 JSON 路由的可用游戏列表。我使用 Vue 资源来读取 JSON 输出,但是,当我在 Web 浏览器中查看应用程序时,我看到来自 JSON 的八个不同条目,它们与数据库无关。我期望在浏览器中显示两条记录,但显示了 8 条空记录。我的 MySQl 数据库中只有 2 条记录。

我有两个交替显示给用户的模板。一个如果游戏是可加入的,另一个如果它正在进行中。 Laravel 输出的 JSON 文件不会被 Vue 应用程序读取,而是在页面上显示 8 条空白记录。我花了最后两天试图弄清楚这个问题,我似乎被困住了。这是我的代码

Viewgames.blade.php

@extends('app')


@section('content')
    <strong>Below is a list of joinable games</strong>
    <div class="container">
    <games></games>
    </div>

  <div id="games-list">
      <template id="games-template">



          <ul class="list-group">
              <li class="list-group-item" v-for="game in games">
                 <div v-if="game.ready === 'Y'">
                     <strong>play against @{{ game.player1 }}</strong>
                 </div>
              <div v-else>
                  <strong>in progress</strong>
              </div>
          </ul>

      </template>



  </div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.js"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.0.3/vue-resource.js"></script>

    <script src="js/all.js"></script>
@endsection

all.js

.component('games', {
template: '#games-template',


data: function() {
    return {

        games: []


    }



},


   created: function() {
        this.$http.get('api/games').then(function (games) {
            this.games = games;

        }.bind(this));
    },

});

new Vue({
    el: 'body'


});

编辑:带查询的控制器:

Route::get('api/games', function() {

return App\Games::where('ready', 'Y')->get();

});

非常感谢任何帮助!

【问题讨论】:

  • 用查询分享你的控制器方法?

标签: php mysql json


【解决方案1】:

您必须确定this.$http.get 的响应。 Chrome 开发者工具可帮助您查看响应数据。 如果响应数据有八条记录,则问题不在客户端,而是在服务器端。

【讨论】:

  • 这是我在 Chrome 开发工具中预览响应数据时得到的 JSON。我所看到的只是我期望的 JSON 输出,但这不是由我的 Vue.JS 脚本解析的。所以服务器工作正常。 '[{"id":1,"player1":16,"player2":50,"winner_id":50,"ready":"Y","created_at":"2016-12-18 19:46:30 ","updated_at":"2016-12-18 19:46:30"}]'
  • @TomMorison 我在来源中发现了一个可疑的东西。请参阅 vue-resource 文档。 (github.com/pagekit/vue-resource/blob/master/docs/…) $http.get() 将响应对象传递给回调。所以你必须使用 json() 方法来获取你想要的数组数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 2018-05-07
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2016-11-04
相关资源
最近更新 更多