Я новичок в piwik. Пожалуйста, помогите мне в моем вопросе.
Проблема: мне нужно создать 4 уровня вложенных таблиц. В настоящее время я могу создавать до 2-го уровня, я имею в виду таблицу с одной вложенной таблицей на строку.
В основном, если я нажимаю на строку таблицы, я получаю субтаблицу. Если я щелкаю на строке субтаблицы снова, она должна показать внутреннюю субтаблицу.
Мне нужно создать Table-> subtable-> subtable-> subtable.
Мой код:
function getpageViewsLevel1($idSite, $date, $period)
{
$query = "select * from....";
$result = Piwik_FetchAll($query, array($idSite, $dateStart, $dateEnd));
// convert this array to a DataTable object
$dataTable = new Piwik_DataTable();
//Add subtable to each result
foreach ($result as $arr){
$piwik_row = new Piwik_DataTable_Row;
$piwik_row->setColumns($arr);
$subDataTable = new Piwik_DataTable();
$piwik_row->addSubTable($subDataTable);
$dataTable->addRow($piwik_row);
}
return $dataTable;
}
function getpageViewsLevel2($idSite, $date, $period, $idSubtable)
{
// Find selected parent row and retrieve data
$dataTable_old = $this->getpageViewsLevel1($idSite, $date, $period);
$row_old = new Piwik_DataTable_Row;
$row_old=$dataTable_old->getRowFromIdSubDataTable($idSubtable+1);
$tmp=$row_old->getColumns();
//Using $actionName in DB Query
$actionName=$tmp['pageTitle'].'%';
//db query
$query = "select * ....";
$result = Piwik_FetchAll($query, array($idSite, $dateStart, $dateEnd, $actionName));
// convert this array to a DataTable object
//$dataTable = new Piwik_DataTable();
foreach ($result as $arr){
$piwik_row = new Piwik_DataTable_Row;
$piwik_row->setColumns($arr);
$subDataTable = new Piwik_DataTable();
$piwik_row->addSubTable($subDataTable);
$dataTable->addRow($piwik_row);
}
return $dataTable;
}
Пока все работает нормально. На 3-м уровне я не могу применить ту же логику, что и у меня нет идентификатора таблицы уровня 2ng.
function getpageViewsLevel3($idSite, $date, $period, $idSubtable)
{
// Find selected parent row and retrieve data
$dataTable_old = $this->getpageViewsLevel2($idSite, $date, $period, ___???????????????);
Пожалуйста, помогите мне, как я могу решить эту проблему. Пожалуйста, дайте мне знать, есть ли другое решение для этого.
Хотя, если я пропущу какое-то число, например «1», для проверки,
$dataTable_old = $this->getpageViewsLevel2($idSite, $date, $period, 1);----->this is not working.
Мне нужно использовать информацию родительской строки в моем запросе к БД.
Заранее спасибо за помощь.