現在ログインしているユーザーのアイテムを取得するスコープを記述する必要があります。現在ログインしているユーザーがすべてのプロジェクトを表示する権限を持っている場合は、システム内のすべてのプロジェクトを一覧表示します。そうでない場合は、ログインしているユーザーによって作成されたプロジェクト、またはユーザーのタスクによって割り当てられたプロジェクトを一覧表示します。 Project
モデルに次のスコープを書いてみました:
withBudget
の範囲は次のとおりです
これまでのところ機能していますが、正確ではありません。ログインしているユーザーが管理者であり、すべての権限を持っていることがわかっている場合でも、いくつかのアイテムしか取得されず、アイテムも降順で並べ替えられることがあります。end_date
ではなく created_at< /代码> と思われる場合があります。
この問題を解決する方法はありますか?さらに詳しい情報が必要な場合はお知らせください
######編集### いくつかのクエリを削除すると、次のコード スニペットが機能します:リーリー 次に、次のようにしてアイテムを取得します。 リーリー
上記のコード スニペットは機能しますが、実行することは 1 つだけではありません (今のところ積極的な読み込みのことは忘れてください)。期限までの残り時間に基づいてプロジェクトをリストする必要があります。したがって、期限が近い項目、期限がまだある項目、期限が切れている項目の順にリストする必要があります。P粉2587888312023-09-12 16:58:05
順序付けの問題は、latest()
と orderBy('end_date', 'desc')
を latest()
として呼び出していることだと思います。 created_at
で動作します。いずれにしても独自の並べ替えを追加するので、おそらく latest()
呼び出しはまったく必要ありません。
ユーザー スコープの問題に関しては、whereHas
と orWhereHas
の代わりに 2 つの orWhereHas< /code> 呼び出しを使用しているかどうか疑問に思っていましたが、これは
で機能する可能性があります。 scopeForUser
問題が発生します。
おそらく別のアプローチは次のようになります:
リーリー