簡単なハズのCodeIgniterですが、以外に基本的なことが見つからなかったのでメモ。
データベースModelを作って使いたい人は多い、というよりも、それなしのWEBアプリを想像するほうがむつかしいのですが。。。ModelをViewへ展開するという一連の流れをメモしておく。
- DBを扱いたい場合、Controllerで、次のおまじないが必須。
$this->load->database();
- モデルを呼ぶ場合は、
$this->load->model(‘users’);
なんて調子。これで、usersクラスが自動的に作られる。だから、Model, View, Controllerでクラス名はユニークであること。
- モデルでは次の一文で最終的にSQLの結果をもらうはず。
$query = $this->db->get(‘usertable’);
- この$queryをモデルから返すときに、
return $query->result_array();
とするのがCodeIgniterでは便利。(理由は後述)
- コントローラー側では次のようにしてViewをインスタンス化する。
$this->load->view(‘users_list’, $data);
- この$dataの理解が大事。Viewに渡された時点で、CodeIgniterが$dataを分解し、添え字を変数化する。これで変数ひとつでいろんなデータを集約してViewに渡すのである。例えば、$data[‘title’]= “ユーザーリスト”;と定義してあれば、Viewでは$titleで”ユーザーリスト”を参照できる。
同様に、Modelでresult_arrayでコントローラーに戻した値は、$data[‘query’] = で渡してViewで展開することになる。つまり、コントローラでは$this->load->model(‘users’); // Modelインスタンス化
$data[‘query’] = $this->users->list_all; // Modelのメソッドを呼び出しレコードセット(配列)を配列で受ける。
$this->load->view(‘user_list’,$data);// $dataに集約し、Viewに渡すという流れになる。
- Viewではテーブル作成の一連のコードが肝。
<table>
<?php foreach($query as $row): ?>
<tr>
<td><?php echo $row[‘id’] ; ?></td>
</tr>
<?php endforeach; ?>
</table>
まとめて要点だけ書いている文書を発見できなかったので、メモっておこう。