クマのブログ

つまづいたところ、学びを書いていきます

【Laravel】モデルのデータ取得

前提

背景

  • 業務内で初めて知ったことのメモ

  • 思い込みが崩れた瞬間

事象(やりたいこと)

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のパターンの使いどころは特にわかっていないので、今後使うことがあれば別途アウトプット

  • 一つ誤解が解けて良かった