1
0

More than 1 year has passed since last update.

【CakePHP3】データベースの新規登録、編集【新人がyoutube動画でPHP学習part3】

Last updated at Posted at 2023-04-06

1.はじめに

今回はデータベースの基本操作であるCRUDのうち、Createにあたる新規登録、Updateにあたる更新を行います。
教材はチャンスラボ株式会社の公式YouTubeチャンネル。
https://www.youtube.com/@asterisk_cl_lab/videos

第6回~第7回の動画を参考にします。

【第6回 新規登録してみよう!】
https://www.youtube.com/watch?v=ieFp-Y9sZIg

【第7回 データ編集してみよう!】
https://www.youtube.com/watch?v=WJeajbVIYAo

2.目次

1.はじめに
2.目次
3.新規登録してみよう!
4.データ編集してみよう!
5.おわりに

3.【第6回 新規登録してみよう!】

CRUDのC=Createについて、新規登録を行いながら解説しています。

1:52~2:15
URLに記載されるコントローラー名とアクション名についての説明です。
例えば[http://localhost/users/index]というURLであれば、コントローラー名は「users」、アクション名は「index」となります。

コントローラー名「users」はUsersController.phpの13行目、クラス「UsersController」を指しています。
URL上ではクラスの「Controller」部分が省略され「users」のみ表記されます。

アクション名「index」はUsersController.phpの20行目、メソッド「index()」を指しています。
ただしindexアクションは省略できるため、[http://localhost/users/index] と [http://localhost/users] は同じものを意味します。
スクリーンショット 2023-04-05 110643.png

【第4回 controllerとViewで画面表示しよう!】の6:33~7:05でも同様の説明がされています。
https://www.youtube.com/watch?v=ANFACTySK20

5:49~6:30
add.ctpファイルのソースコードを確認しています。
記述されたHTMLタグ<fieldset><legend>に馴染みが無かったので調べました。
<fieldset>・・・入力フォームをグループ化するためのタグ
<legend>・・・グループ化されたフォームに命名するタグ

7:25~7:55
patchEntityは、newEntityで作成した空のレコードに対して、ブラウザに入力されたデータを自動的に入れる処理をします。フォームのname属性とデータベースのカラムが同じであれば自動的に処理をしてくれるということですが、この動画を例にすれば、<input name="account">なのでデータベースのカラム名もaccountで一致しないといけません。
スクリーンショット 2023-04-05 131752.png

8:11~9:10
データベース登録成否での条件分岐を説明しています。
この部分の説明がイマイチ分からなかったので自分なりの解釈ですが
〇データベース登録が上手くいった場合、、、
登録成功のメッセージが表示される。
加えて56行目のコードによりアクションがindexとなるため画面遷移する。
スクリーンショット 2023-04-06 090209.png
〇データベース登録が失敗した場合、、、
登録失敗のメッセージが表示される。
アクションはaddのままなので、画面遷移はしない。

4.【第7回 データ編集してみよう!】

CRUDのU=Updateについて、データ編集を行いながら解説しています。

2:00~3:04
データ編集の場合は、どのデータを編集したいか指定する必要があります。
なのでIDの数値をパラメータとして指定し、URLのアクション名の後に表示しています。
3:43~4:16の説明の通り、このIDをeditメソッドの引数として使用しているようですね。

4:22~4:28
UsersController.phpの72行目のコードについて説明しています。
this->Users が UsersTable.phpを示しているとのこと。これについてはコードを見ていて気になっていたんですよね。こういった$this->hogehogeというコードがどこを指しているのか、どうすれば分かるのでしょうか、、、
スクリーンショット 2023-04-06 090302.png

5:26~5:41
「リクエストのメソッドを判定して処理している」とのことですが、ここで説明しているメソッドとは何を指すのか分からず調べました。どうやらHTTPリクエストメソッドのことを指していると思われ、POST、PUT、PATCHは全てHTTPリクエストメソッドに含まれるようです。

8:05~8:23
FormHelperの記述について解説しています。
そもそもFormHelperとは何かよく分からなかったので調べてみました。僕なりの解釈ですがFormを作成するための便利なメソッドの総称といったところでしょうか。
ソースコードは$this->Form->controlとなっており、すべてcontrolメソッドが使用されていますが、ほかにもメソッドがあるようです。cookbookにいろいろなパターンが記載されていました。
https://book.cakephp.org/3/ja/views/helpers/form.html

5.おわりに

動画はわりと簡潔にサクサクと進むので分かった気になってしまうのですが、一つずつ見てみると実は分かってない箇所が多いことに気づきますね。僕のような初心者は分からない箇所をどんどん調べていきましょう。
以上、ご覧いただきありがとうございました。

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