LoginSignup
0
0

More than 3 years have passed since last update.

Laravelでデータの作成、削除 save() create() delete()

Posted at

save:テーブルを保存

$user = new App\User //モデルUserクラスのオブジェクト$userを作成
$user->name = "toto" //$user->nameプロパティに "toto"を代入
$user->save() //saveでDB内Userテーブルに新規保存できる。

create:テーブル作成

マスアサイメント対策(次項目でで説明)
をmodelに記入する
app/User.php

protected $fillable = ["name","body"];

と記入し、リクエストから変更できるカラムをname,bodyのみに制限する。

//DB内にUserを直接作成
App\User::create(["name"=>"piyo", "address"=>"tokyo"]);

マスアサイメントを忘れていると、MassAssignmentExceptionエラーが起こる。

マスアサイメントとは

説明:
ユーザーからリクエストされたデータに応じて、サーバ側はDB内のデータを変更する。
しかし、悪意のあるユーザや、バグにより、想定外のリクエストが行われ、
DB内の操作されたくないデータが操作されてしまう問題。

具体例:
DB内に、name address admin_modeのデータがあるとしたとき
入力フォームのnameの部分を、検証ツール等で書き換えを行い、
nameではなく、admin_modeで送る。
すると、admin_modeの変更リクエストをユーザが送ることができてしまう。
結果、一般ユーザーが管理者権限を持つことができてしまう。

補足:railsだとstrong parameterがマスアサイメント対策に該当する.

delete:テーブル削除

$user = App\User::find(1); //Userテーブル内id=1のデータを$userとして指定
$user->delete(); //$userに該当するUserテーブルデータを削除
0
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
0
0