Reputation: 7128
I've commented the code so you can understand it better.
public function store(Request $request)
{
$user = $request->user(); // current user who should be excluded
$group = Group::where('id', $request->input('group_id'))->first();
$message = new GroupMessage;
$message->group_id = $request->input('group_id');
$message->user_id = $user->id;
$message->note = $request->input('newMessage');
$message->message_id = $request->input('message_id');
$message->save();
// returning data
// 'user' is current user (also available in 'group.users')
// remove current 'user' from ('group.users')
$ms = GroupMessage::where('id', $message->id)->with(['user', 'group', 'group.users'])->first();
return response()->json([
'data' => new NotesResource($ms),
'message' => 'Message sent successfully.'
], 200);
Log::info('message data sent.');
broadcast(new MessageSent($message))->toOthers();
}
here is how code above returns data
Any idea?
Upvotes: 0
Views: 177
Reputation: 50491
You can exclude this User using Eager Loading Constraints:
$ms = GroupMessage::where('id', $message->id)
->with(['user', 'group.users' => function ($query) use ($user) {
$query->where('users.id', '<>', $user->id);
}])->first();
Laravel 7.x Docs - Eloquent - Relationships - Constraining Eager Loads
Upvotes: 2