Laravel, Datatables и Model Hydrate - PullRequest
       16

Laravel, Datatables и Model Hydrate

0 голосов
/ 05 июля 2018

Сводная информация о проблеме или запросе функции

Мне нужно использовать гидрат для заполнения модели, которая не связана с базой данных. Но при этом я не могу использовать вызов datatable () для laravel.

    $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"
}],

1 Ответ

0 голосов
/ 05 июля 2018

Дело в том, как вы возвращаете значение. Проверьте последний метод этой строки:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...