LoginSignup
10
14

More than 5 years have passed since last update.

【私感】Eloquentの集計について【laravel】

Posted at

背景

最近laravelを仕事で使った。
で、Eloquentに対しての集計方法が一歩理解できたのでそのメモ
なんとなく使えるのがフレームワークの良いところ(?)

そこに至った経緯

なんかエラーでる
他の箇所ではこんな感じで使えていた気がするのに・・・

$result = Model::where->('id', 1)->get();
echo $result->name; //Property [name] does not exist on this collection instance

eloquentの集計概念

Model::find(1);

これは主キーが"1"に一致したものをSELECTするので
必ず一つ(以下)のデータしか集計しない
→modelで返す

Model::where->('id', 1)->get();

これは"id"といったカラムが"1"のものをSELECTするので
複数のデータを集計することがある(主キーを指定しているわけではないので)
→collectionで返す

Model::where->('id', 1)->first();

これは"id"といったカラムが"1"のものをSELECTして
最初に見つかったものを返すので必ず一つしかデータを集計しない
→modelで返す

Model::find([1, 2]);

配列でfindした場合である。
これは主キーが"1"もしくは"2"に一致したものをSELECTするので
必ず複数のデータを集計する
→collectionで返す

上記、厳密には一致するデータ見つからなかったりしてnullが返ることもあるが、
概ねこれを意識していればちょっと進んだ扱いができるかと思う。

つまり上のエラーは

Collectionからプロパティにアクセスしようとしていたんですね。
そう、getとfindとか場当たりに使っていたので
うまくいったりいかなかったりしていたんですね。

10
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
14