Пытаюсь сделать 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
}
palach
17 January 2023 05:55
2
Приведи полный пример кода и где ты его вызываешь
Вот так вызываю, используя стандартный функционал.в файле 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();
}
}
palach
18 January 2023 20:36
5
Что бы подгоузить данные отчета нужно не просто в свойство передаиь id а как то так:
$report = new AOR_Report();
$report->retrieve($_REQUEST['report_id) ;
Желательно перед этим проверить на непустоту и правилтность типа данных в реквесте
palach:
retrieve
Метод такой есть…
$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();
}
palach
20 January 2023 05:51
7
and_y87:
build_report_csv
У тебя метод ничего не возвращает если ты расширяешь 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.
А в вебморде файл формируется с данными
palach
20 January 2023 11:13
9
Я думаю, что ты некорректно проверяешь отсутствие данных, пройди под дебагом или на крайняк сделай дамп переменной csv перед тем, как она будет выводииься внутри метода отчета build_report_csv