【第4回】Drupalカスタムモジュールで入力内容をDB保存する

  •  
 
MAXIMUM に投稿

タグ

1. 目的

前回でフォームを作成しました。しかし、入力内容がどのような流れでDBに保存されていくかを追えてなかったので、今回はそれを追って行こうかと思います。

2. フォームからの入力データ

前回にシステムの入り口として用意したフォームから出欠するしないというデータが送られてきます。もちろん各ユーザが入力します。※その情報を入れるDBですがDrupalの場合はMariaDB 11.8というものになります。(MySQL互換)

仮に出席しますといったデータが流れてきた場合は、出席扱いで名前などとセットでINSERTされます。

3. ソースコードの書き方

続いて、ソースコードの書き方ですが、Drupalの場合は下記のように接続します。

private Connection $database

初回回答の場合の例ですが、下記のようにINSERTします。

$this->database->insert('event_manager_attendance')
  ->fields([
    'uid' => $uid,
    'event_id' => (int) $event->id(),
    'user_name' => $user_name,
    'attendance' => $attendance,
    'comment' => $comment,
    'created' => $this->time->getRequestTime(),
  ])
  ->execute();

4. キャッシュクリア

変更を適用する際は毎回恒例のキャッシュクリアをやります。※Macターミナルかつddev環境を前提に例で挙げます。

ddev drush cr

5. 感想

Drupalの場合はDB接続のやり方がテンプレート化しているので、イチから構築する手間がなくて良いなと思いました。

6. おまけ

ソースとしては前回のフォームと同じファイルに入っています。前回文も一緒にご参照ください。

コメントを追加

プレーンテキスト

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