はじめに
データの登録や更新に用いる各メソッドを記載しています。主に違いが分かるように記載しています。
シンプルに書いてますので、実際に業務で使用する際は若干書き方が違うと思います。
詳しい説明は別の記事を参照して下さい。
目次
save
インスタンスを作成して、データを挿入後、save( )で保存する。
$user = new User();
$user->name = $request->name;
$user->save();
update
saveとほぼ同じですが、違いは以下の通りです。
save( )
nameカラムの内容を更新する際に、挿入されるデータが更新前と同じものであれば、updated_atのカラムが更新されない。
update( )
nameカラムの内容を更新する際に必ずupdated_atのカラムが更新される。
$user = new User();
$user->name = $request->name;
$user->update();
create
こちらはインスタンス化からデータ保存を一括で実行できます。
$user = App\Model\User::create(['name' => $request->name]);
associate
そのユーザーに紐ずく、postsテーブルのuser_idカラムを更新する。一対多のリレーションで使用する。
※この場合、Postモデル内にあるbelongsToの第二引数であるuser_idを更新する。
// $userの部分は、レコードではなく、user_id(idの数字)を入れるだけでもいけると思います・・・たぶん
$user = User::find(1);
$post->user()->associate($user)->save();
// Post.phpファイル
public function user()
{
return $this->belongsTo('App\Models\User', 'user_id');
}
attachとdetach
attach( )
中間テーブルに一括で登録できる。
この場合は「ユーザー」に紐ずく「複数の趣味」を一括でDBに保存出来る。
$user->hobbies()->attach($request->hobbies);
detach( )
中間テーブルを一括で削除できる。
引数を指定しない場合は、その「ユーザー」に紐ずく「全ての趣味」が中間テーブルから削除される。
$user->hobbies()->detach();
※中間テーブルの更新は他sync( )やupdateExistingPivot等がありますが、ここでは説明を割愛します。