@@ -2673,7 +2673,7 @@ protected function buildFilter(Query $query): array
26732673 };
26742674
26752675 $ filter = [];
2676- if ($ query ->isObjectAttribute () && !\str_contains ($ attribute , '. ' ) && in_array ($ query ->getMethod (), [Query::TYPE_EQUAL , Query::TYPE_CONTAINS , Query::TYPE_NOT_CONTAINS , Query::TYPE_NOT_EQUAL ])) {
2676+ if ($ query ->isObjectAttribute () && !\str_contains ($ attribute , '. ' ) && in_array ($ query ->getMethod (), [Query::TYPE_EQUAL , Query::TYPE_CONTAINS , Query::TYPE_CONTAINS_ANY , Query:: TYPE_CONTAINS_ALL , Query:: TYPE_NOT_CONTAINS , Query::TYPE_NOT_EQUAL ])) {
26772677 $ this ->handleObjectFilters ($ query , $ filter );
26782678 return $ filter ;
26792679 }
@@ -2682,8 +2682,10 @@ protected function buildFilter(Query $query): array
26822682 $ filter [$ attribute ]['$in ' ] = $ value ;
26832683 } elseif ($ operator == '$ne ' && \is_array ($ value )) {
26842684 $ filter [$ attribute ]['$nin ' ] = $ value ;
2685+ } elseif ($ operator == '$all ' ) {
2686+ $ filter [$ attribute ]['$all ' ] = $ query ->getValues ();
26852687 } elseif ($ operator == '$in ' ) {
2686- if ($ query ->getMethod () === Query::TYPE_CONTAINS && !$ query ->onArray ()) {
2688+ if (in_array ( $ query ->getMethod (), [ Query::TYPE_CONTAINS , Query:: TYPE_CONTAINS_ANY ]) && !$ query ->onArray ()) {
26872689 // contains support array values
26882690 if (is_array ($ value )) {
26892691 $ filter ['$or ' ] = array_map (function ($ val ) use ($ attribute ) {
@@ -2760,6 +2762,8 @@ private function handleObjectFilters(Query $query, array &$filter): void
27602762 switch ($ query ->getMethod ()) {
27612763
27622764 case Query::TYPE_CONTAINS :
2765+ case Query::TYPE_CONTAINS_ANY :
2766+ case Query::TYPE_CONTAINS_ALL :
27632767 case Query::TYPE_NOT_CONTAINS : {
27642768 $ arrayValue = \is_array ($ queryValue ) ? $ queryValue : [$ queryValue ];
27652769 $ operator = $ isNot ? '$nin ' : '$in ' ;
@@ -2844,6 +2848,8 @@ protected function getQueryOperator(string $operator): string
28442848 Query::TYPE_GREATER => '$gt ' ,
28452849 Query::TYPE_GREATER_EQUAL => '$gte ' ,
28462850 Query::TYPE_CONTAINS => '$in ' ,
2851+ Query::TYPE_CONTAINS_ANY => '$in ' ,
2852+ Query::TYPE_CONTAINS_ALL => '$all ' ,
28472853 Query::TYPE_NOT_CONTAINS => 'notContains ' ,
28482854 Query::TYPE_SEARCH => '$search ' ,
28492855 Query::TYPE_NOT_SEARCH => '$search ' ,
0 commit comments