続:掲示板を作ろう その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!