モジュールを作ろう!(4)テーブルの作成
今回は Cubson とは関係ありません。モジュールで使う MySQL のテーブルを作る作業です。
XSAS や XAIO でテスト環境を作っている場合,phpMyAdmin が使えるようになっているはずです。これを使うと,SQL に悩まされることなく,ブラウザのフォームで項目を設定してテーブルを作成できますので,不慣れな方は利用されると良いかと思います。
テーブル名
テーブル名は,{prefix}_{modulename}_{tablename} というように付けてください。そうしないとちゃんと動きません。
- prefix
- XOOPSをインストールするときに設定した DB Prefix です。phpMyAdmin でテーブル一覧を表示すると,テーブル名の頭に同じ名前が並んでいるので分かると思います。XOOPS Cube Legacy をデフォルト値でインストールすると,6文字くらいのでたらめなアルファベットと数字の羅列になっているはずです。XOOPS2.0.X から移行した場合は,XOOPS_となっていることが多いと思います。
- modulename
- モジュール名。前回使ったのと同じ名前にしてください。
- tablename
- テーブル名。
- 例
- as8da9_bookmark_bm
それも面倒だ,早く動くところを見たい,という方は,しょうがないので以下の SQL を使ってください。通常のモジュールと同様に,/{module_dir}/sql/mysql.sql という名前でファイルを作り,中身に以下を記述して,XOOPS のモジュールアップデートを行ってください。
CREATE TABLE `{prefix}_bookmark_bm` ( `bm_id` int(11) unsigned NOT NULL auto_increment, `bm_title` varchar(255) NOT NULL default '', `url` varchar(255) NOT NULL default '', `uid` mediumint(8) unsigned NOT NULL default '0', `memo` text NOT NULL, `reg_unixtime` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`bm_id`) ) TYPE=InnoDB AUTO_INCREMENT=1 ;
bookmark モジュールじゃないものを作りたいという人は,残念ですが頑張ってください。
項目名
Cubson では,フィールド名にある程度縛りがあります。いくつかは必須で,いくつかは「従っていると楽」というものです。僕も全部正確に知っているわけではないですが,とりあえずは次の二つを。
- プライマリィキー
- フィールド名を{tablename}_id にして,autoincrement を付けます。例:bm_id
- 名称
- タイトルとか名称とか件名を表す項目。プライマリィキーの次に置きます。例:bm_name