4141use function is_iterable ;
4242use function is_string ;
4343use function iterator_to_array ;
44+ use function method_exists ;
4445use function sleep ;
4546use function sprintf ;
4647use function substr ;
@@ -255,6 +256,7 @@ protected function performSearch(Builder $builder, ?int $offset = null): array
255256 ],
256257 [
257258 '$addFields ' => [
259+ // Metadata field with the total count of documents
258260 '__count ' => '$$SEARCH_META.count.lowerBound ' ,
259261 ],
260262 ],
@@ -467,7 +469,7 @@ private function getSearchableCollection(Model|EloquentCollection $model): Mongo
467469 $ model = $ model ->first ();
468470 }
469471
470- assert (in_array (Searchable::class, class_uses_recursive ( $ model) ), sprintf ('Model "%s" must use "%s" trait ' , $ model ::class, Searchable::class));
472+ assert (method_exists ( $ model, ' searchableAs ' ), sprintf ('Model "%s" must use "%s" trait ' , $ model ::class, Searchable::class));
471473
472474 return $ this ->database ->selectCollection ($ model ->searchableAs ());
473475 }
@@ -480,7 +482,7 @@ private function getIndexableCollection(Model|EloquentCollection $model): MongoD
480482 }
481483
482484 assert ($ model instanceof Model);
483- assert (in_array (Searchable::class, class_uses_recursive ( $ model) ), sprintf ('Model "%s" must use "%s" trait ' , $ model ::class, Searchable::class));
485+ assert (method_exists ( $ model, ' indexableAs ' ), sprintf ('Model "%s" must use "%s" trait ' , $ model ::class, Searchable::class));
484486
485487 if (
486488 $ model ->getConnection () instanceof Connection
0 commit comments