laravel whereHasについて

前提・実現したいこと

Laravelにてlatestで最新の一件を取得しているリレーションに検索条件を当てようとしたら
最新より前のデータも取得してしまいました。
wherehasは全てのレコードを見てしまうというのを他の方の記事で見たのですが、対応できるメソッド等は無いのでしょうか。

※実際のソースと名称は違いますが大まかに下記の様な関係になっています。
【仕様】
latestTestStatusはステータスの更新履歴が入っているテーブルからlatestで最新の一件を取得しています。
Status、StatusCategoryはstatusの種類とstatusの大分類と紐づけるためのリレーションです。

該当のソースコード

// フィルターを追加 if (!is_null($test)) { $test = is_array($test) ? $test: explode(',', $test); $query->whereHas(latestTestStatus.Status.StatusCategory', function ($q) use ($test) { $q->whereIn('id', $test); }); }

コメントを投稿

0 コメント