### モデル名::query()とは?
モデルを生成している。Event::query()なら、Eventモデルに書かれた内容を元に、モデルをコピーしているようなイメージ。
$query = Event::query(); //←モデルEventのコピーを作ってる状態
return $query->displayed()->notEnd()->orderByForEvent()->get(); //このgetでDBから中身取得
EloquentとQueryって?
DBとモデルを対応づける機能が定義されている。
このサイトがわかりやすい!
https://nextat.co.jp/staff/archives/131
### $requestとは?
Railsでいうところのparams。ユーザーから受け取った情報が入ってる。
### 変数等に何の値が入ってるか見たい時
var_dump(中身を見たい変数名等);
exit;
binding.pryの代わりに活用。
よく苦しめられるエラー
Call to undefined method Illuminate\Database\Eloquent\Builder::all();
もしくは
Method Illuminate\Database\Eloquent\Collection::(なんらかの変数名) does not exist.
$query = Event::query();はモデルを作成しているが、
$query = Event::query();->all();や
$query = Event::query();->get();とすることで、
モデルの中身の配列を取得してしまうため、モデルに使うメソッドを使用するとエラーとなる。
リレーション先のテーブルにデータが入っているものだけ取得したい
https://www.yukiiworks.com/archives/256
上記を参考に。
$query = モデル名::with('リレーション先のテーブル名');
$query->whereHas(
'リレーション先のテーブル名',
function ($content) { //引数は任意の単語で
$contents->whereExists(
function ($contents) {
}
);
}
);
これで取得できました。