LoginSignup
3
8

More than 3 years have passed since last update.

Eloquent、Queryあたりでよく詰まったところ

Last updated at Posted at 2019-11-25

 モデル名::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) {
                    }
                );
            }
        );

これで取得できました。

3
8
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
3
8