続:掲示板を作ろう その2

まずはユーザーの管理のために、1つだったテーブルを2つに分けるところから

びふぉあ
テーブル名 comments
あふたー
テーブル名 users comments
データベースの設定

テーブル users

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| name     | varchar(255) | NO   |     | NULL    |                |
| email    | varchar(255) | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

テーブル comments

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| comment  | varchar(400) | NO   |     | NULL    |                |
| user_id  | int(11)      | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

まずはコメント表示させたいので、これで。
comments の user_id と users の id をリンクさせるイメージ。
追々、users にはパスワードを、comments には投稿時刻なんぞを入れたいと考え中

コメントを表示させる

複数のテーブルをまたがってデータを取りたいので、SQL文は

SELECT name, email, comment FROM comments
INNER JOIN users ON users.id = comments.user_id ORDER BY comments.id DESC;
要約:
name, email, comment を users の id と comments の user_id と一致するものだけ comments&users テーブルから結合して持って来いよと。
さらに comments の id の降順に持ってこーい。

これを CodeIgniter の中で、同じになるものを探してみた。

今回は、Active Record クラス!君に決めた!

これを application/models/boardmodel.php に書き込んでくと

public function comments() {
   $this->db->select('name, email, comment');
   $this->db->from('comments');
   $this->db->join('users', 'users.id = comments.user_id', 'inner');
   $this->db->order_by('comments.id', 'desc');
   $query = $this->db->get();

   return $query;
}

こんなんなりました。これで上で書いたSQL文と同意のはず。
ブラウザで表示してみたところちゃんと表示されたので、コメント表示はOK!