準備として 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