belongsToMany(User::class, 'notification_user') ->withPivot('read_at') ->withTimestamps(); } /** * Notifications that a user has not read (no pivot row with read_at set). */ public static function scopeUnreadForUser($query, $userId) { return $query->whereDoesntHave('users', function ($q) use ($userId) { $q->where('user_id', $userId)->whereNotNull('notification_user.read_at'); }); } }