【问题标题】:Datatables with laravel how to render hasMany relationship带有laravel的数据表如何呈现hasMany关系
【发布时间】:2018-06-04 23:02:48
【问题描述】:

我的控制器有以下响应

[
  {
     "id": 1,
     "place_id": 1,
     "name": "Test",
     "type": 5,
     "created_at": "2018-06-04 15:29:02",
     "updated_at": "2018-06-04 15:29:02",
     "time": [
         {
            "id": 1,
            "stadium_id": 1,
            "day": "Saturday",
            "from_hour": 7,
            "to_hour": 12,
            "created_at": "2018-06-04 15:29:42",
            "updated_at": "2018-06-04 15:29:42"
         },
         {
            "id": 2,
            "stadium_id": 1,
            "day": "Sunday",
            "from_hour": 7,
            "to_hour": 12,
            "created_at": "2018-06-04 15:54:03",
            "updated_at": "2018-06-04 15:54:03"
         }
    ]
  }
]

我想访问每个时间对象中的日期属性

我尝试了下面的代码,但它当然只是加载了第一个结果 有解决办法吗

columns: [
         { data: 'name' },
         { data: 'type' },
         { data: 'time.0.day' },
         { data: 'time.0.from_hour' },
         { data: 'time.0.to_hour' },


    ],

【问题讨论】:

  • 访问是什么意思?
  • 在我的视图中将其呈现为一行
  • 如何创建响应?
  • 公共函数 getType($id) { $st = \App\Stadiums::where('type', $id)->get(); $st->load('时间');返回响应()->json($st,200); }
  • 您希望它们位于不同的行中?

标签: laravel laravel-5 datatables


【解决方案1】:

您实际上可以使用render 属性访问time 数组:

 columns: [{
      data: 'name'
    },
    {
      data: 'type'
    },
    {
      data: 'time',
      render: function(data, type, row) {
        var txt = '';
        data.forEach(function(item) {
          if (txt.length > 0) {
            txt += '</br> '
          }
          txt += item.day;
        });
        return txt;
      }
    },
   ...

这只会为time 中的每个对象添加一个换行符。这是一个Fiddle 供您检查。

【讨论】:

    猜你喜欢
    • 2019-09-22
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    相关资源
    最近更新 更多