ウェビナーにてDrupalカスタムモジュールの基礎からPHPUnit作成まで学びました。
https://www.youtube.com/watch?v=c3GCK5D4WSE&list=PLVkpj3GMKNm2n_u-gOCBhDtqXTDxwhqjM
そこで今回は特に印象に残ったCRUD操作について掘り下げて行こうかと思います。
ここではDrupal Schema APIというDBテーブル構造をPHPの配列として定義・管理する仕組みを使います。
※DB差異吸収を自動でやってくれる他、モジュール削除すればDBも削除されるというのがメリットになります。
準備:必要なファイル
モジュール専用のDBテーブルを作成するための準備です。
※コーディング方法は割愛
web/modules/custom/marucha/marucha.install
web/modules/custom/marucha/src/MaruchaService.php
web/modules/custom/marucha/marucha.services.yml
web/modules/custom/marucha/src/Form/MaruchaForm.php
web/modules/custom/marucha/src/Controller/MaruchaController.php
準備:使用するコマンド
.install ファイルのテーブル定義(スキーマ)を書き換えたときにモジュール再インストール
ddev drush pmu marucha -y && ddev drush en marucha -y
画面反映用キャッシュクリア
ddev drush cr
テーブルの確認
ddev drush sql-query "SELECT * FROM marucha_submissions;"
1.名前の送信
先ずはこのようにフォームから名前の送信を行います。
2.DB側での受け取り
Macターミナルなどから、テーブルを覗いて送信済みであることを確認します。
3.リストから一覧を読み取る
「研修生」という入力した名前が確認できました。
また、名前が被っても別キー管理なため重複登録可能であることが分かりました。

応用:削除の操作
Drupalはメソッド名に指定がある為、別ファイルに切り出してinsert文と同居させる。
insert用:MaruchaForm.php
delete用:MaruchaDeleteForm.php
また、tableselectを使うと見易いのでオススメ。
$form['table'] = [
'#type' => 'tableselect',
'#header' => $header,
'#options' => $options,
'#empty' => $this->t('データがありません。'),
];
感想
DrupalでもCRUD操作が出来ることが分かって、システム開発のイメージが付いた。
また、.phpでの書き方も理解出来て良かった。
- 閲覧数 40
コメントを追加