【问题标题】:Laravel, Datatables and Model HydrateLaravel、数据表和模型水合物
【发布时间】:2018-07-05 13:36:24
【问题描述】:

问题或功能请求摘要

我需要使用 hydrate 来填充未链接到数据库的模型。但是这样做我不能使用 laravel 的 datatable() 调用。

    $query = "EXECUTE [dbo].[rpt_controlclient]  '$XML' ";
    DB::connection('sqlsrvreplicate')->reconnect();
    $data = DB::connection('sqlsrvreplicate')->select($query);

    $ReportData = $Model->hydrate($data);
    return datatables()->collection($ReportData)->toJson();

我需要得到什么

"data": [
[
  "Tiger Nixon",
  "System Architect"
],
[
  "Garrett Winters",
  "Accountant"
],

我实际上得到了什么

"data": [{
  "Name":"Tiger Nixon",
  "Job":"System Architect"
},
{
  "Name":"Garrett Winters",
  "Job":"Accountant"
}],

【问题讨论】:

    标签: php laravel datatables laravel-5.6


    【解决方案1】:

    问题在于您返回值的方式。检查这一行的最后一个方法:

    return datatables()->collection($ReportData)->toJson();
    

    使用toJson(),您将数据作为json 对象返回,这就是您得到:

    {
      "data": [
        {
          "Name": "Tiger Nixon",
          "Job": "System Architect"
        },
        {
          "Name": "Garrett Winters",
          "Job": "Accountant"
        }
      ]
    }
    

    相反,您可以这样做:

    return datatables()->collection($ReportData)->toArray();
    

    现在,如果您将其用于 API,您可以在客户端将 json 解析为 array。如果您的客户端是用 php 编写的,只需执行以下操作:

    $my_fancy_array = json_decode($received_data, true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多