Passing Values to Report
The relay() method allows values external to Reportico to be passed in for use in the report. For example, you may wish to pass a string for use in the report query which may have been provided from your web application (which may be picked up from the $_REQUEST array).You can pass either an array of parameters to the method or pass key and value pairs as strings in a number of relay calls.
The key value passed must equate to the name of a criteria item created in the query. If you are passing multiple criteria filter values then the values can be separated by commas.
To use the parameters in the report to pass to a criteria element, use the notation
{USER_PARAM,relay_parameter_key}For example :-
SELECT x, y FROM table WHERE column = "{USER_PARAM,my_parameter}"
<?php
\Reportico\Engine\Builder::build()
...
->relay([array of parameters expressed as key value pairs])
->relay(key_string,value_string)
...
->execute();
?>
1
The following example runs the stock report, passing in the USA and Japan as report filter options. Note that we pass through the options with quotes in this example because the values are used within an SQL IN clause.
Run Demo
Run Demo
<?php
require_once(__DIR__ .'/../vendor/autoload.php');
\Reportico\Engine\Builder::build()
->properties([ "bootstrap_preloaded" => true])
->datasource()->database("mysql:host=localhost; dbname=DATABASE NAME")->user("USER")->password("PASSWORD")
->title ("Employee List")
->description ("Produces a list of our employees")
->sql ("
SELECT EmployeeID employee_id, LastName last_name, FirstName first_name, date(BirthDate) birth_date, Country, BirthDate
FROM northwind_employees
WHERE 1 = 1
[ AND Country IN ( {USER_PARAM,country} ) ]
ORDER BY Country, LastName
")
// Passes a hardcoded value to the report sql. Note the 'country' in the relay key must match the
// USER_PARAM parameter above
// the value passed could easily be a dynamic value
// passed from a form into the $_REQUEST php array.
->relay("country", "'UK','USA'")
->execute();
?>