Drupal Schema APIでテーブルに対してCRUDのCを操作をしてみた

  •  
 
MAXIMUM に投稿

タグ

ウェビナーにて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での書き方も理解出来て良かった。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。