Экспорт отчётов по API

Пытаюсь сделать API экспорта отчётов по их id в формате JSON.
сделал SugarWebServiceImplv4 API метод возвращающий JSON.

но не получается сделать экспорт
вызываю любой SQL через $module->db->database-quey()
всегда возвращается один и тот же ответ:

  "current_field": null,
  "field_count": null,
  "lengths": null,
  "num_rows": null,
  "type": null

почему так?

при том $module->db->database содержит одни null

$module->db->database =   {
        "affected_rows": null,
        "client_info": null,
        "client_version": null,
        "connect_errno": null,
        "connect_error": null,
        "errno": null,
        "error": null,
        "error_list": null,
        "field_count": null,
        "host_info": null,
        "info": null,
        "insert_id": null,
        "server_info": null,
        "server_version": null,
        "stat": null,
        "sqlstate": null,
        "protocol_version": null,
        "thread_id": null,
        "warning_count": null
}

Приведи полный пример кода и где ты его вызываешь

Вот так вызываю, используя стандартный функционал.в файле SugarWebServiceImplv4.php

class SugarWebServiceImplv4 {
  public function get_report()
    {
        include_once "modules/AOR_Reports/AOR_Report.php";

        $report = new AOR_Report();
        $report->report_module = 'AOR_Reports';
        $report->id = $_REQUEST['report_id'];

        return $report->build_report_csv();
    }
}

Что бы подгоузить данные отчета нужно не просто в свойство передаиь id а как то так:

$report = new AOR_Report();
$report->retrieve($_REQUEST['report_id) ;
Желательно перед этим проверить на непустоту и правилтность типа данных в реквесте
 

Метод такой есть…

  $report = new AOR_Report();
  $report->retrieve($_REQUEST['report_id']);

  $report->build_api_report(); // $report->build_report_csv();

Только заголовки отдаёт… данные не выводятся

делал даже так… заполнил все свойства… всё равно ноль данных…

public function get_report()
    {
        include_once "modules/AOR_Reports/AOR_Report.php";

        $report = new AOR_Report();
        $report->module_dir = 'AOR_Reports';
        $report->object_name = 'AOR_Reports';
        $report->table_name = 'aor_reports';

        $report->importable = 1;

        $report->disable_row_level_security = 1;

        $report->id = $_REQUEST['report_id'];

        $report->name = 'api';

        $report->date_entered = '01.01.2018 00:00';
        $report->date_modified = '01.01.2023 00:00';

        $report->modified_user_id = 1;
        $report->modified_by_name = 'Administrator';


        $report->created_by = 1;
        $report->created_by_name = 'Administrator';

        $report->deleted = 0;

        $report->assigned_user_id = '...';

        $report->report_module = 'Opportunities';

        $report->retrieve($_REQUEST['report_id']);

        $report->build_api_report();
    }

У тебя метод ничего не возвращает если ты расширяешь API v4 то он должен возвращать массив, который в последствии будет приведен к json.

ну и в самой постановке задачи непонятно что ты хочешь вернуть и в каком формате.

также наполнение объекта данными до ретрива не несет никакой полезной нагрузки, все равно во время ретрива эти данные будут переписаны.

//эти строчки бессмысленны
 $report->module_dir = 'AOR_Reports';
        $report->object_name = 'AOR_Reports';
        $report->table_name = 'aor_reports';

        $report->importable = 1;

        $report->disable_row_level_security = 1;

        $report->id = $_REQUEST['report_id'];

        $report->name = 'api';

        $report->date_entered = '01.01.2018 00:00';
        $report->date_modified = '01.01.2023 00:00';

        $report->modified_user_id = 1;
        $report->modified_by_name = 'Administrator';


        $report->created_by = 1;
        $report->created_by_name = 'Administrator';

        $report->deleted = 0;

        $report->assigned_user_id = '...';

        $report->report_module = 'Opportunities';

Так же обращаю внимание , что метод build_report_csv возвращает не данные а вываод файла, его тоже нужно переделать убрать буферизацию и вернуть данные csv полагаю именно по этому вы сделали дубль этого метода назвав build_api_report, но в любом случае имейте это в виду.

У меня стоит цель получить отчёт в формате JSON.

Сейчас хочу получить данные хоть как то, а затем уже привести к нужный вид код.

build_report_csv() Да, выводит данные в виде файла, но он выводит в формате csv данные…
Я хочу что бы помимо заголовков колонок, там вывелись бы ещё и данные, в этом проблема: метод выводит только заголовки без данных, когда я использую его в API.
А в вебморде файл формируется с данными

Я думаю, что ты некорректно проверяешь отсутствие данных, пройди под дебагом или на крайняк сделай дамп переменной csv перед тем, как она будет выводииься внутри метода отчета build_report_csv