準備として testdbを作り、サンプルデータを投入しておきます。
$ mysql -u root -p MariaDB [(none)]> CREATE DATABASE testdb DEFAULT CHARACTER SET utf8; MariaDB [(none)]> USE testdb; Database changed MariaDB [testdb]> CREATE TABLE IF NOT EXISTS `tbl_users` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'ID', `name` VARCHAR(255) NOT NULL DEFAULT 'hoge' UNIQUE COMMENT '名前' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'ユーザー'; MariaDB [testdb]> INSERT INTO tbl_users (id, name) VALUES ('0','hoge'); Query OK, 1 row affected (0.00 sec) MariaDB [testdb]> SELECT * FROM tbl_users; +----+------+ | id | name | +----+------+ | 1 | hoge | +----+------+ 1 row in set (0.00 sec)
データベース接続設定を適宜編集しておきます。
$ vi application/config/database.php 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'testdb',
モデルファイルを用意しておきます。
※cakephpのように、モデルファイル名とモデルクラス名とテーブル名は一緒じゃなくてOK。フリーダム
$ vi application/models/Users_model.php db->get('tbl_users', 1); return $query->result(); } }
コントローラにモデルの使用を追記します。
$ vi application/controllers/Api.php load->model('Users_model', '', TRUE); // DBアクセス $result = $this->Users_model->get(); $resp = []; foreach ($result as $k => $v) { $resp[] = $v->name; // hoge } // JSON出力する場合 $this->output ->set_content_type('application/json') ->set_output(json_encode($resp)); // テンプレートへ出力する場合 $data['title'] = 'タイトルタイトル'; $data['body'] = '本文本文'; $this->load->view('xxx_tpl', $data); } }
テンプレートへ出力する場合
$ application/view/xxx_tpl.php// ←$dataではなく$titleをechoしている
ブラウザでアクセスします。
{"hoge"}
デバッグにはプロファイラが便利です。
$this->output->enable_profiler(true);
実行されたクエリだけを確認したい時はこんな感じでも。
foreach ($this->db->queries as $k => $v) { echo str_replace("\n", "", $v) . "\n"; }
参考
http://pneskin2.nekoget.com/codeigniter/3/user_guide/general/models.html