前提
背景
業務内で初めて知ったことのメモ
思い込みが崩れた瞬間
事象(やりたいこと)
DB内のデータをモデル経由で取得したい
困ったこと
1, $user = User::get()->where('id', 1); 2, $user = User::where('id', 1);
上記1も2も同じようにuserテーブルのidカラムが1のレコードを取得してきてくれると思っていたが違った
実際にdd()してみると、結果は以下の通り。
1, のdd()結果
Illiminate\Database\Eloquent\Builder
が返ってくる- 現状使いどころは不明…
2, のdd()結果
Illiminate\Database\Eloquent\Collection
が返ってくるModelについては実際に取得したかったuserテーブルのidが1であるレコードが取得できており、Modelのattributesに連想配列で格納されている
値そのものの取得は今回であれば以下の感じ
// すべてのカラムの情報出力 foreach ($user as $val){ echo $val } // nameカラムのみ取得 $user['name'];
- Modelから値を取得したい時にやる王道パターン
所感
1, のBuilderのパターンの使いどころは特にわかっていないので、今後使うことがあれば別途アウトプット
一つ誤解が解けて良かった