2

I have models:

ChatRoomMembers
ChatRoom
so I want to check if auth user is in chat room

my relationships:

ChatRoom:

    public function chatRoomMembers()
    {
        return $this->hasMany(ChatRoomMember::class);
    }

ChatRoomMembers:

    public function chatRoom()
    {
        return $this->belongsTo(ChatRoom::class);
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }
SicklyDZN
  • 31
  • 3

2 Answers2

1

So I created relationship in User Model:

    public function chatRooms(){
        return $this->hasManyThrough(
           ChatRoom::class,
           ChatRoomMember::class,
           'user_id',
           'id',
           'id',
           'chat_room_id'
        )->orderBy('created_at', 'DESC');
    }

and I am getting only this user chat rooms

SicklyDZN
  • 31
  • 3
0

In user model add below relationship

public function chatRoomMember(){

   return $this->hasMany(ChatRoomMembers::class);
}

and in code

auth()->user()->chatRoomMember->count()

or

auth()->user()->chatRoomMember->exists()
John Lobo
  • 14,355
  • 2
  • 10
  • 20
  • I tried other relationship, `public function chatRooms(){ return $this->hasManyThrough( ChatRoom::class, ChatRoomMember::class, 'user_id', 'id', 'id', 'chat_room_id' )->orderBy('created_at', 'DESC'); }` – SicklyDZN Jul 12 '21 at 18:48
  • if its working then post your answer and accept your answer so it might help someone – John Lobo Jul 12 '21 at 18:49