8
8
9
9
namespace eZ \Publish \Core \Persistence \Legacy \Filter \CriterionQueryBuilder \Content ;
10
10
11
- use Doctrine \DBAL \ParameterType ;
11
+ use Doctrine \DBAL \Connection ;
12
12
use eZ \Publish \API \Repository \Values \Content \Query \Criterion \ObjectStateId ;
13
13
use eZ \Publish \Core \Persistence \Legacy \Content \ObjectState \Gateway ;
14
14
use eZ \Publish \SPI \Persistence \Filter \Doctrine \FilteringQueryBuilder ;
@@ -25,42 +25,33 @@ public function accepts(FilteringCriterion $criterion): bool
25
25
return $ criterion instanceof ObjectStateId;
26
26
}
27
27
28
+
29
+ /**
30
+ * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion\ObjectStateId $criterion
31
+ */
28
32
public function buildQueryConstraint (
29
33
FilteringQueryBuilder $ queryBuilder ,
30
34
FilteringCriterion $ criterion
31
35
): ?string {
32
36
$ value = (array )$ criterion ->value ;
33
37
34
- $ conditions = [];
35
- foreach ($ value as $ objectStateId ) {
36
- $ conditions [] = $ queryBuilder ->expr ()->eq (
37
- 'osl.contentobject_state_id ' ,
38
- $ queryBuilder ->createNamedParameter ($ objectStateId , ParameterType::INTEGER )
39
- );
40
- }
41
-
42
- var_dump (
43
- __METHOD__ ,
44
- $ value ,
45
- (string ) $ queryBuilder ->expr ()->and (
46
- $ queryBuilder ->expr ()->eq ('content.id ' , 'osl.contentobject_id ' ),
47
- $ queryBuilder ->expr ()->and (...$ conditions ),
48
- )
49
- );
50
-
51
- /** @var \eZ\Publish\API\Repository\Values\Content\Query\Criterion\ObjectStateId $criterion */
52
38
$ queryBuilder
53
- ->join (
39
+ ->joinOnce (
54
40
'content ' ,
55
41
Gateway::OBJECT_STATE_LINK_TABLE ,
56
42
'osl ' ,
57
43
(string ) $ queryBuilder ->expr ()->and (
58
44
$ queryBuilder ->expr ()->eq ('content.id ' , 'osl.contentobject_id ' ),
59
- $ queryBuilder ->expr ()->or (...$ conditions ),
60
- ),
45
+ $ queryBuilder ->expr ()->in (
46
+ 'osl.contentobject_state_id ' ,
47
+ $ queryBuilder ->createNamedParameter ($ value , Connection::PARAM_INT_ARRAY )
48
+ )
49
+ )
61
50
);
62
51
63
52
53
+
54
+
64
55
return $ queryBuilder ->expr ()->isNotNull (
65
56
'osl.contentobject_state_id ' ,
66
57
);
0 commit comments