diff --git a/framework/core/src/Discussion/DiscussionRepository.php b/framework/core/src/Discussion/DiscussionRepository.php index 68d053a86..a50ec5537 100644 --- a/framework/core/src/Discussion/DiscussionRepository.php +++ b/framework/core/src/Discussion/DiscussionRepository.php @@ -42,16 +42,29 @@ class DiscussionRepository /** * Get the IDs of discussions which a user has read completely. * + * @deprecated 1.3 Use `getReadIdsQuery` instead + * * @param User $user * @return array */ public function getReadIds(User $user) + { + return $this->getReadIdsQuery($user) + ->all(); + } + + /** + * Get a query containing the IDs of discussions which a user has read completely. + * + * @param User $user + * @return Builder + */ + public function getReadIdsQuery(User $user): Builder { return Discussion::leftJoin('discussion_user', 'discussion_user.discussion_id', '=', 'discussions.id') ->where('discussion_user.user_id', $user->id) ->whereColumn('last_read_post_number', '>=', 'last_post_number') - ->pluck('id') - ->all(); + ->select('id'); } /** diff --git a/framework/core/src/Discussion/Query/UnreadFilterGambit.php b/framework/core/src/Discussion/Query/UnreadFilterGambit.php index 44bd7c264..b995b2c74 100644 --- a/framework/core/src/Discussion/Query/UnreadFilterGambit.php +++ b/framework/core/src/Discussion/Query/UnreadFilterGambit.php @@ -61,7 +61,7 @@ class UnreadFilterGambit extends AbstractRegexGambit implements FilterInterface protected function constrain(Builder $query, User $actor, bool $negate) { if ($actor->exists) { - $readIds = $this->discussions->getReadIds($actor); + $readIds = $this->discussions->getReadIdsQuery($actor); $query->where(function ($query) use ($readIds, $negate, $actor) { if (! $negate) {