libro
www.tuyano.com
初心者のためのCakePHP3 プログラミング入門

複数テーブルの連携 (2/5)

作成:2015-10-24 09:13
更新:2015-10-24 09:13

■2つのテーブルを用意する

では、簡単なサンプルを作成して、実際に関連付けを行ってみましょう。まずは、テーブルを用意して置かなければいけませんね。ここでは、「members」と「messages」という2つのテーブルを作成しておくことにしましょう。

下のリスト欄に2つのテーブルの生成SQLクエリーを掲載しておきました。サンプルプロジェクトではSQLiteをデータベースに設定していましたから、これで利用できるクエリー文になっています。

この2つのテーブルは、menbersmessagesが「1対多」の関係で関連付けられるようになっています。membersのレコード1つに、messagesの複数のレコードが関連付けられる、というわけです。

●外部IDについて
ここでのポイントは、messagesテーブルにある項目です。ここには「members_id」という名前の項目が用意されていますね。これは「外部ID(外部キー)」と呼ばれる働きをするものです。

外部IDは、関連付けられるテーブルのIDを保管するものです。ここでは、messagesテーブルに、関連するmembersのレコードのIDを保管するために用意してあります。外部IDは、このように「テーブル名_id」という名前で付けられるのが一般的です。

テーブル作成は、コマンドラインからSQLiteで行ってもいいですが、前に紹介したSQLite Database Browserを使えばマウス操作で作成することもできます。

※SQLite Database Browserのサイト
http://sqlitebrowser.org/


※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

CREATE TABLE `members` (
    `id`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `name`    TEXT NOT NULL,
    `mail`    TEXT
)


CREATE TABLE `messages` (
    `id`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `members_id`    INTEGER NOT NULL,
    `title`    TEXT NOT NULL,
    `comment`    TEXT
)

※関連コンテンツ

「初心者のためのCakePHP3 プログラミング入門」に戻る