CodeIgniterで接続しているデータベースにPHPからテーブルを作成するサンプルコード
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ただいま、CodeIgniterにてオリジナルCMSを制作中の「とあるクリエイター」です。 その関係で「CodeIgniter」関連のメモの更新が増える予定です。
今回はCodeIgniterで接続しているデータベースにPHPからテーブルを作成するサンプルコードをメモしました。
最初に
まず、以下のサンプルテーブルを作ると仮定してサンプルコードを紹介いたします。
※実装時はフォームなどから、自由にフィールド名などの各項目を設定できるようにカスタマイズしてください。
サンプルテーブル
名前 | データ型 | デフォルト値 | その他 |
---|---|---|---|
id | INT(5) | auteincrement | |
str | VARCHAR(100) | ||
checkbox | ENUM(a,b,c) | a | |
created | DATETIME |
テーブルを自動で作成
以下のパスのページにアクセスすると上記のサンプルテーブルを作成する
仕様で作成します。
sqlサイトURL/table/add
モデルの作成
以下のファイルを作成します。
application/model/table_model.php<?php
class Table_model extends CI_Model{
function __construct(){
parent::__construct();
$this->load->database();
$this->load->dbforge();
}
public function add_table($fields,$table_name){
if(!$this->db->table_exists($table_name)){
$this->dbforge->add_field($fields);
$this->dbforge->add_key('id');
$this->dbforge->create_table($table_name);
return true;
}
}
}
?>
コードについて
テーブルが存在しているか確認します。
php$this->db->table_exists();
データベースフォージクラスを読み込みます。
php$this->load->dbforge();
フィールドをセットします。
php$this->dbforge->add_field();
キーをセットします。
php$this->dbforge->add_key();
テーブルを作成します。
php$this->dbforge->create_table();
コントローラーの作成
以下のファイルを作成します。
application/controller/table.php<?php
class talbe extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('Table_model');
}
public add(){
$table_name = 'sample_table'; //テーブル名
$fields = array(
'id' => array(
'type' => 'INT',
'constraint' => 5,
'auto_increment' => TRUE
),
'str' => array(
'type' => 'VARCHAR',
'constraint' => '100'
),
'checkbox' => array(
'type' => 'ENUM',
'constraint' => array('a','b','c'),
'default' => 'a'
),
'created' => array(
'type' => 'DATETIME'
)
);
if($this->Table_model->add_table($fields,$table_name)){
echo $table_name.'を作成しました。';
}
}
}
?>
コードについて
$table_name
に作りたいテーブル名を入れます。
$fields
に作りたいテーブルのフィールドを入れます。
今回は上記サンプルテーブルの内容を``$fields`の配列に代入しています。
最後に
ざっくりとした内容ですがこれで以下へへアクセスすると
tableが作成されます。
sqlサイトURL/table/add
いろいろとカスタマイズをして実装してみてください。
参考文献
記事Article
もっと見る- article
Dockerの利用していないゴミを掃除しディスクスペースを解放するいくつかのやり方を紹介
- article
Next.js のバンドルサイズを可視化する@next/bundle-analyzer の紹介
- article
VSCodeでTypescriptファイルのimport補完で相対パスではなくエイリアスするための設定
- article
UUIDより短いユニークなIDを生成できるnpmライブラリnanoidの使い方
- article
【解決方法】TypeScript発生したTS2564 エラーの対処
- article
express で IP を取得する際などに利用する req.connection 非推奨(deprecated)の対処