public function chats()
{
return $this->hasMany('App\Chat','sender_id')->orWhere('receiver_id',\Auth::id());
}
私の要件は、私が送受信したメッセージをフェッチしたいということです。私はそれをどのようにすることができますか?カスタムhasMany関係Laravel
public function chats()
{
return $this->hasMany('App\Chat','sender_id')->orWhere('receiver_id',\Auth::id());
}
私の要件は、私が送受信したメッセージをフェッチしたいということです。私はそれをどのようにすることができますか?カスタムhasMany関係Laravel
次のコードは、トリックを行う必要があります。
public function chats()
{
return $this->hasMany('App\Chat','sender_id')->union($this->hasMany('App\Chat','receiver_id'));
}
これは組合 2のクエリである関係を返します - 特定のユーザーが送信者と指定した別の1であるのチャットメッセージをフェッチ1をユーザーは受信者です。
$ user-> chatsでユーザーのチャットにアクセスできるようになりました。
あなたは非常に近くでした。
public function chats()
{
return $this->hasMany('App\Chat')
->where('sender_id', \Auth::id())
->orWhere('receiver_id', \Auth::id());
}
これが正しく設定されたら、あなたは現在のユーザーからORに送られたチャットのリストにアクセスするために$users->chats
を使用することができます。hasMany()
はwhere()
とorWhere()
呼び出しを連鎖し、私はこのように、そのクエリになるだろう受け入れます。
これはうまくいかないと思います。デフォルトでは、hasManyはchats.user_idをデフォルトの外部キーとして試行して結合します。チャット・レコードにuser_idフィールドがない場合、それは失敗します。 – Brad