こちらの記事は以下の書籍を参考にアウトプットとして執筆しました。
PHPフレームワーク Laravel入門 第2版
モデルの更新・削除・保存
モデルの新規保存
- モデルのインスタンスを作成
- 値を設定
- インスタンスの保存
やり方はイトイとあるが、結局はインスタンスを作成して値を設定してsaveするという流れ
モデルの更新
モデルを保存する点に関して新規作成と同じ
違いはモデルクラスをnewではなく、モデルクラス::find
でインスタンスを用意する点
モデルの削除
deleteメソッドを呼び出すだけ
モデルインスタンス->delete();
モデルのリレーション
リレーションは複数のテーブルを関連付けること
2つのテーブルの関係について
主テーブルと従テーブルの関係
種類 | 説明 |
---|---|
主テーブル | 外部キーを持たないテーブル |
従テーブル | 外部キーにより主テーブルとの関連情報を保管しているテーブル(外部キーを持っているテーブルのこと) |
has One結合
2つのテーブルが1対1の関係で関連付けられている
主テーブルから従テーブルを取得する
hasOneメソッドの返り値を返すことで定義できる
has Many結合
1対多の関連付け
hasManyメソッドを使う
belongs To結合
上記の2つは主テーブルから従テーブルを取り出すもので、belongs Toはその逆
従テーブルから主テーブルを取り出す
基本的に1つだけ取り出される。
関連レコードの有無
特定のリレーションの値を持つ
モデル ::has(リレーション名)->get();
指定のリレーションの値を持たない
モデル ::dosenthas(リレーション名)->get();
withによるEagerローディング
モデルクラス名:all
これで全レコードの取得ができるが、これはDBにとってはアクセス回数が多くなることから負担になる。
DBへのアクセスを減らすにはwithメソッドを使う
モデル ::with(リレーション名)->get();
これはRagerローディングと呼ばれ、一回のallメソッドで膨大なアクセスを行うときに劇的な効果を得る