CodeigniterでmodelとDBを使って見る

Codeigniterで基本のMVCしてみる

前回はCodeigniterのcontrollerとviewの基本を使ってみた 今回はmodelとDBを用いたMVCの流れを一連でやってみました。

  • まず以下のdatabaseファイルに情報を入力する
    • application/config/database.php
$db['default'] = array(
  'dsn' => '',
  'hostname' => 'localhost',
  'username' => 'name',
  'password' => 'password',
  'database' => 'database_name',
  'dbdriver' => 'mysqli',
  'dbprefix' => '',
  'pconnect' => FALSE,
  'db_debug' => (ENVIRONMENT !== 'production'),
  'cache_on' => FALSE,
  'cachedir' => '',
  'char_set' => 'utf8',
  'dbcollat' => 'utf8_general_ci',
  'swap_pre' => '',
  'encrypt' => FALSE,
  'compress' => FALSE,
  'stricton' => FALSE,
  'failover' => array(),
  'save_queries' => TRUE
);

Modelの書き方

  • 上記の情報を入れたらデータベースに接続可能であるかmodelでチェックしてみる。
    • application/models/Model.php
class Model extends CI_Model {

    function __construct(){
      parent::__construct();
      $this->load->database();
    }

    function getData($page){
      $query = $this->db->get("poem");

      return $query->result();
    }
  }

まずapplication/models配下にModel.phpを作成する。 コンストラクタ内でデータベースに接続できているか確認する。

getData関数を作成し$queryを作成する この$this->db->get()でpoemテーブルの中身を全件取得することができる。

Controllerにてmodelデータ読み込み

  • controllerにてAfter.phpに以下のソースにする
    • application/controllers/After.php
class After extends CI_Controller {

  public function index()
  {
    $this->load->model("Model");
    $data['result'] = $this->Model->getData("poem");

    $this->load->view("after", $data);
  }
}

Model.phpを読み込んでgetData関数にてpoemテーブルの情報を配列に格納し それをafter.phpのviewに値を渡す。

view側では以下のようにデータを取得する。

viewにmodelで取得したデータを表示させる

  • viewにてafter.phpに以下のソースにする
    • application/views/after.php
<body>
<?php foreach ($result as $results): ?>
  <p><?php echo $results->poem; ?></p>
<?php endforeach; ?>
</body>

$resultをforeachで回して取得したデータがstdClass型なので アロー記号でカラムを指定して中身を表示させると 以下のようにデータが取得できていることがわかります。

f:id:suga-tech3:20160814021129p:plain

Codeigniterの基本動作をしていきましたが難しくなくコードが書きやすく分かりやすいです。次は何かしらサイトを作っていけたらと思います。