LoginSignup
11

More than 3 years have passed since last update.

【CakePHP4】 newEntityとpatchEntityの違い

Last updated at Posted at 2020-02-03

みなさん、こんにちは。

今回は、Entityについて書いていきたいと思います。

これを読めば、Entitiyには、「どのようなもので」「どのようなものに使うことができるのか」newEntityとpatchEntityは、何が違うのかなどの感覚が掴めると思います。

そもそもEntityとは?

Entityはどういうもので何ができるのか?

モデル→データベースに対して、データを取得したり、書き加えたりする。MVCのなかの一つ

テーブル、エンティティは、対象の範囲の違い
テーブルは、データベース全般が対象、エンティティは各レコードなどDBの中でも更にフォーカスしたものって感じ。

基本的な流れは下記の図で。

スクリーンショット 2020-01-31 11.20.25.png

newEntitiyとは?

Entityを新規作成するときに使用する

具体的には、新規追加、保存処理をするときに使用

新しく保存されるときにデータの検証が行われる

データの検証の詳細は、hoge/Table.phpのvalidationメソッドに書く

データからエンティティーを構築する時、データの検証 (バリデーション) ができます。
データのバリデーションではデータの型、形状およびサイズなどを確認することができる。
既定ではリクエストデータがエンティティーに変換される前に検証が行われます。
検証が通らなかったらエラーが返る。

patchEntity とは?

主にデータの更新するときに使用する。

これも同じくデータの検証が行われるという意味では、newEntityと同じ。

newEntityと同じように、 patchEntity メソッドは、データがエンティティーにコピーされる前に 検証を行います。このメカニズムは エンティティー構築前のデータ検証 のセクションで説明されています。 エンティティーにパッチを当てる際に検証を無効にしたいのであれば、 validate オプションにする。

具体的な用途の違い

自分の現状の認識では、newEntityに出来て、patchEntityに出来ないものは、なさそう。
(色々な機能がある分、データ取得するなど速度に影響してきそうだけど)

例えば、確認画面で以前に入力した値と現在入力した値を比べて参照できるようにするためには、patchEntityを使うことになりそう。

新規作成画面にpatchEntityが使われていたことを確認したので、自分が知らない挙動があってもおかしくはないと思っています。
ご存知の方がいらっしゃいましたら、教えてくださるとありがたいです。

詳しくは、CakePHPの公式ドキュメントでご確認ください。https://book.cakephp.org/4/ja/orm/validation.html

読んでくださり、ありがとうございます。

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
11