####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テーブルデータを削除