Codeigniterフレームワークでレポートを生成する最も簡単な方法は何ですか?このタスクを実行するために利用できるライブラリはありますか?これを行うための他のリソースをグラフ化することを除いて。
自分でいい解決策を見つけました。 csv形式でレポートを生成する場合は、codeigniterを使用すると非常に簡単です。モデル関数
_function index(){
return $query = $this->db->get('my_table');
/*
Here you should note i am returning
the query object instead of
$query->result() or $query->result_array()
*/
}
_
今コントローラーに
_function get_report(){
$this->load->model('my_model');
$this->load->dbutil();
$this->load->helper('file');
/* get the object */
$report = $this->my_model->index();
/* pass it to db utility function */
$new_report = $this->dbutil->csv_from_result($report);
/* Now use it to write file. write_file helper function will do it */
write_file('csv_file.csv',$new_report);
/* Done */
}
_
外部は必要ありません。すべてがcodeigntierで利用できます。乾杯! xmlファイルを作成したい場合も簡単です。
dbutilのxml_from_result()
メソッドを使用し、write_file('xml_file.xml,$new_report)
を使用するだけです。これらのヘルプが役立つリンクにアクセスしてください。
そして
完全な説明:
モデル:
class Csv_m extends MY_Model {
function getCSV() {
$sql = "SELECT * FROM tablename";
return $this->db->query($sql);
}
}
コントローラ:
class Generate extends CI_Controller {
var $file_path;
public function __construct() {
parent::__construct();
$this->file_path = realpath(APPPATH . '../assets/csv');
}
function index() {
$this->load->model('csv_m');
$this->load->dbutil();
$this->load->helper('file');
//get the object
$report = $this->csv_m->getCSV();
$delimiter = ",";
$newline = "\r\n";
$new_report = $this->dbutil->csv_from_result($report, $delimiter, $newline);
// write file
write_file($this->file_path . '/csv_file.csv', $new_report);
//force download from server
$this->load->helper('download');
$data = file_get_contents($this->file_path . '/csv_file.csv');
$name = 'name-'.date('d-m-Y').'.csv';
force_download($name, $data);
}
}
これを.csvレポートに使用しました。 csvファイルのデータベースフィールド名を変更する機能があります。これがコードです。
public function export_csv() {
$file_name = 'File_name_'.date("Y-m-d h-i-s").'.csv';
$query = $this->db->query('SELECT
id as "Id", // id is table id and Id is the csv header field.
franchiseopt as "Nearest Location",
hear_about_us as "How did you hear about us?",
specify as "Specify",
email as "Email",
noguests as "Number of Guests",
eventdate as "Date of Event",
name as "Your Name",
phone as "Phone Number",
locationevent as "Location of Event",
message as "More Details"
FROM TABLE_NAME ORDER BY id DESC');
$this->load->dbutil();
$data = $this->dbutil->csv_from_result($query);
$this->load->helper('download');
force_download($file_name, $data);
exit();
}
明らかに、テーブルに応じてデータベーステーブルフィールドを置き換える必要があります。