をlaravelする「orWhere」を追加私はUser
モデルでは1、は雄弁なモデル関係
public function notifications(){
return $this->morphMany('App\Notification','receiver')
->orWhere('type', 2);
}
他の条件が存在しない場合、これはうまく機能し、以下のようなモデルの関係を持っています。しかし$user
はUser
のインスタンスがあると私はnotifications
notifications
から
問い合わせ条件となり、選択
*、
$user->notifications->where('status', 1);
、同様に呼び出す場合。receiver_id
= 3 およびnotifications
。receiver_id
はnullではなく、notifications
です。私は関係者の条件グループにできないよので、receiver_type
=ユーザーまたはtype
= 2、ここでstatus
= 1
問題があるが、最終条件はOR
として働いています。したがって、基本関係条件が失敗しても、status & type
フィールドだけが一致しても、そのレコードがフェッチされます。
私が必要とするのは、関係条件の後に最初と最後に括弧を追加することで、他の条件が適用されても基本クエリには影響しません。
は私が必要なもの:(。。。notifications
receiver_id
= 3 とnotifications
receiver_id
nullでなく、 notifications
receiver_type
=ユーザーまたはtype
= 2 )
選択* が
notifications
からとstatus
= 1
おかげで動作します!これは機能し、私はパラメータのグループ化を認識しています。私の疑問は、グループ内のmorphManyを含むことであり、@ kapil.devの答えのような解決策を探していました。残念ながらそれはうまくいきませんでした。 –