В отчете о яшме у меня есть SQL-предложение вроде этого:
SELECT * FROM table $P!{my_where}
В моей программе php я называю отчет следующим образом:
JasperPHP::process(
base_path() . '/app/reports/report.jasper',
false,
array("pdf"),
array("my_where" => "WHERE field = value"),
\Config::get('database.connections.mysql')
)->execute();
Затем это сообщение об ошибке:
Неправильный формат отчета!
Делать это простым способом работает, я имею в виду:
В отчете:
SELECT * FROM table WHERE $P!{field} = $P{value}
В PHP:
JasperPHP::process(
base_path() . '/app/reports/report.jasper',
false,
array("pdf"),
array("field" => $my_field, "value" => $my_value),
\Config::get('database.connections.mysql')
)->execute();
Дело в том, что мне нужно динамически построить предложение where из нескольких полей, поэтому необходимо передать только параметр «где».
Любая идея?
Решено: просто необходимо заключить в кавычки параметр:
$my_where = '"' . $my_where . '"';
JasperPHP::process(
base_path() . '/app/reports/report.jasper',
false,
array("pdf"),
array("my_where" => $my_where),
\Config::get('database.connections.mysql')
)->execute();
Других решений пока нет …