public function testSubgroupHandoff() { $dq = new DataQuery('DataQueryTest_A'); $subDq = $dq->disjunctiveGroup(); $orgDq = clone $dq; $subDq->sort('"DataQueryTest_A"."Name"'); $orgDq->sort('"DataQueryTest_A"."Name"'); $this->assertEquals($dq->sql(), $orgDq->sql()); $subDq->limit(5, 7); $orgDq->limit(5, 7); $this->assertEquals($dq->sql(), $orgDq->sql()); }
/** * @param DataQuery $query * * @return $this|DataQuery */ public function apply(DataQuery $query) { $orGroup = $query->disjunctiveGroup(); $orGroup = parent::apply($orGroup); if (count($this->subfilters) > 0) { foreach ($this->subfilters as $f) { $orGroup = $f->apply($orGroup); } } // The original query will have been affected by the things added to $orGroup above // but returning this instead of that will cause new filters to be added as AND return $query; }