The example demonstrates usage of Join
process. This Join process is used to join two source of data by matching id between them. The result is the combination of both.
<?php
require_once "MyReport.php";
$report = new MyReport;
$report->run()->render();
<?php
//Step 1: Load KoolReport
require_once "../../../load.koolreport.php";
use \koolreport\processes\ColumnMeta;
use \koolreport\processes\Join;
//Step 2: Creating Report class
class MyReport extends \koolreport\KoolReport
{
protected function settings()
{
return array(
"dataSources"=>array(
"first"=>array(
"class"=>'\koolreport\datasources\ArrayDataSource',
"dataFormat"=>"table",
"data"=>array(
array("first_id","name"),
array(1,"John"),
array(2,"Marry"),
array(3,"Peter"),
array(4,"Donald"),
)
),
"second"=>array(
"class"=>'\koolreport\datasources\ArrayDataSource',
"dataFormat"=>"table",
"data"=>array(
array("second_id","income"),
array(1,50000),
array(2,60000),
array(3,100000),
array(4,80000),
)
),
)
);
}
protected function setup()
{
//Prepare data
$first = $this->src("first");
$second = $this->src("second");
$first->pipe($this->dataStore("first"));
$second->pipe($this->dataStore("second"));
//Save orginal data
$join = new Join($first,$second,array("first_id"=>"second_id"));
$join->pipe($this->dataStore("result"));
}
}
<?php
use \koolreport\widgets\koolphp\Table;
use \koolreport\widgets\google\LineChart;
?>
<div class="report-content">
<div class="text-center">
<h1>Join Process</h1>
<p class="lead">This example shows the usage of Join process</p>
</div>
<div class="row">
<div class="col-md-6">
<h5 class="text-center">First Table</h5>
<?php
Table::create(array(
"dataSource"=>$this->dataStore("first"),
"cssClass"=>array(
"table"=>"table-bordered table-striped table-hover"
)
));
?>
</div>
<div class="col-md-6">
<h5 class="text-center">Second Table</h5>
<?php
Table::create(array(
"dataSource"=>$this->dataStore("second"),
"cssClass"=>array(
"table"=>"table-bordered table-striped table-hover"
)
));
?>
</div>
</div>
<i class="fa fa-arrow-down" style="font-size:24px;"></i>
<pre style="font-weight:bold"><code>
$join = new Join($first,$second,array("first_id"=>"second_id"));
</code></pre>
<i class="fa fa-arrow-down" style="font-size:24px;"></i>
<div style="margin-top:20px;">
<?php
Table::create(array(
"dataSource"=>$this->dataStore("result"),
"cssClass"=>array(
"table"=>"table-bordered table-striped table-hover"
)
));
?>
</div>
</div>