1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CodeIgniter4でのデータベース管理の基本

Last updated at Posted at 2023-08-30

はじめに

原則としては内部向けですが、自分もはまった経験がある部分なので、もしかしたら役に立つかもしれないので公開します。(CodeIgniter3以下でも基本は同じですが、関数名の変更があるので注意してください:例えばCI3までは add_field → CI4 では addField

おそらく一番参考になるサイト(英語)

データベース管理の流れ

CodeIgniter4のデータベース管理の流れを整理してまとめておきます。

  1. php spark migrate:create <管理ファイル名>
  2. 管理ファイルを編集して up にアップデート内容を記述
  3. 管理ファイルを編集して down にアップデートを戻す内容を記述
  4. php spark migrate で完了!
  5. php spark db:table などで変更内容を確認

migrate:create で管理ファイル名の連番オプションを変更することも可能なので、プロジェクトで統一して管理してください。(例えば --suffix<日付-管理ファイル名> の形でマイグレーションファイルが生成されます)ちなみに migrate:create を使わなくてもマイグレーションファイルを作れますが、管理面からこれを使っておいたほうが良いです。

使う関数

  • $this->forge->addField([...]) → フィールドの追加
  • $this->forge->dropField([...]) → フィールドの追加
  • $this->forge->addKey('<カラム名>') → インデックスの追加
  • $this->forge->createTable('<テーブル名>') → テーブルの作成
  • $this->forge->dropTable('<テーブル名>') → テーブルの削除
  • $this->forge->addColumn('<テーブル名>', [...]) → カラムの追加
  • $this->forge->dropColumn('<テーブル名>', [...]); → カラムの削除
  • $this->forge->modifyColumn('<テーブル名>', [...]) → カラムの定義変更

[...] にカラム定義を配列の形で入れて、基本的には以下の関数を使ってデータベースを管理しますが、既に作成されたテーブルに対して addField を適用しようとするとエラーになります。既に存在するテーブルに対してカラムの追加を行う場合は addColumn を適用してください。

変数定義

上記 [...] に代入する配列内のカラム定義の例は以下のようになります。配列は変数として与えることもできます。

'<カラム1>'  => [
    'type'          => '<変数型>',
    'constraint'    => '文字数',
    ... <続く> ...
],
'<カラム2>'  => [
    'type'          => '<変数型>',
    'constraint'    => '文字数',
    ... <続く> ...
],
... <続く> ...

補足

SQLAlchemyなど、DERaCで主に使っているPythonフレームワークのデータベース管理ではデータベースモデルのファイルを編集してマイグレーションコマンドを打ち込むとマイグレーションファイルが自動的に作成される形になります。CIの場合、モデルの定義はマイグレーションファイルで直接管理して、モデル定義ではデータベース操作を定義する構造になります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?