@murakamidesu

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Eloquentでの複数条件検索

Eloquentのリレーションで複数条件検索

LaravelのEloquent?のクエリビルダにてリレーションを用いたテーブルの結合を行っています。

発生している問題・エラー

 仮にブログアプリを開発していて、userテーブルとpostテーブルを結合しているとしましょう。
 問題は、結合元のuserテーブルにはwhere句が効くのですが、postテーブルにはwhere句が効きません。

該当するソースコード

 実際のコードから一部変更しています。
カラムA、Bはuser、postテーブル両方にあるものとします。

$result = User::where('columnA', $columnA) 
             ->where('columnB', true)
             ->whereHas('Post', function($query) use ($columnA) {
                       $query->where('columnA', "{$columnA}") 
                             ->where('columnB', true);
           })->with('Post')
             ->get();

自分で試したこと

実行される前のSQL文を画面に出力すると、inner joinなどではなく、exists句が使用されており、postテーブルに対するwhere句が効いていませんでした。
 言葉足らずなしつもんですが、有識者の方いらっしゃいましたら回答お願いいたします。

0 likes

1Answer

Your answer might help someone💌