Laravel はプロジェクト終了日順に最新のプロジェクトを取得します
P粉773659687
P粉773659687 2023-09-11 21:38:55
0
1
512

現在ログインしているユーザーのアイテムを取得するスコープを記述する必要があります。現在ログインしているユーザーがすべてのプロジェクトを表示する権限を持っている場合は、システム内のすべてのプロジェクトを一覧表示します。そうでない場合は、ログインしているユーザーによって作成されたプロジェクト、またはユーザーのタスクによって割り当てられたプロジェクトを一覧表示します。 Project モデルに次のスコープを書いてみました:

リーリー

withBudgetの範囲は次のとおりです

リーリー

これまでのところ機能していますが、正確ではありません。ログインしているユーザーが管理者であり、すべての権限を持っていることがわかっている場合でも、いくつかのアイテムしか取得されず、アイテムも降順で並べ替えられることがあります。end_date ではなく created_at< /代码> と思われる場合があります。

この問題を解決する方法はありますか?さらに詳しい情報が必要な場合はお知らせください

######編集### いくつかのクエリを削除すると、次のコード スニペットが機能します:

リーリー 次に、次のようにしてアイテムを取得します。 リーリー

上記のコード スニペットは機能しますが、実行することは 1 つだけではありません (今のところ積極的な読み込みのことは忘れてください)。期限までの残り時間に基づいてプロジェクトをリストする必要があります。したがって、期限が近い項目、期限がまだある項目、期限が切れている項目の順にリストする必要があります。
P粉773659687
P粉773659687

全員に返信(1)
P粉258788831

順序付けの問題は、latest()orderBy('end_date', 'desc')latest() として呼び出していることだと思います。 created_at で動作します。いずれにしても独自の並べ替えを追加するので、おそらく latest() 呼び出しはまったく必要ありません。

ユーザー スコープの問題に関しては、whereHasorWhereHas の代わりに 2 つの orWhereHas 呼び出しを使用しているかどうか疑問に思っていましたが、これは で機能する可能性があります。 scopeForUser 問題が発生します。

おそらく別のアプローチは次のようになります:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート