/** * @param $modelAttributeToDataProviderAdapter * @param null | string $onTableAliasName * @return string */ protected function resolveFinalContent($modelAttributeToDataProviderAdapter, $onTableAliasName = null) { if ($modelAttributeToDataProviderAdapter instanceof ReadOptimizationDerivedAttributeToDataProviderAdapter) { $builder = new ReadOptimizationModelWhereAndJoinBuilder($modelAttributeToDataProviderAdapter, $this->joinTablesAdapter); $clausePosition = 1; $where = array(); $builder->resolveJoinsAndBuildWhere(null, null, $clausePosition, $where, $onTableAliasName); return $where[1]; } else { $modelClassName = $modelAttributeToDataProviderAdapter->getResolvedModelClassName(); $metadataAdapter = new FilterForReportFormToDataProviderMetadataAdapter($this->componentForm); $attributeData = $metadataAdapter->getAdaptedMetadata(); //todo: right now in makeWhere we always set setDistinct to true when instantiating new ModelWhereAndJoinBuilder //todo: but when we are calling makeWhere from here we should not set that to true. or should it? TBD return ModelDataProviderUtil::makeWhere($modelClassName, $attributeData, $this->joinTablesAdapter, $onTableAliasName); } }
public function testIsNotNull() { $filter = new FilterForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_ROWS_AND_COLUMNS); $filter->attributeIndexOrDerivedType = 'string'; $filter->operator = OperatorRules::TYPE_IS_NOT_NULL; $metadataAdapter = new FilterForReportFormToDataProviderMetadataAdapter($filter); $metadata = $metadataAdapter->getAdaptedMetadata(); $compareClauses = array(1 => array('attributeName' => 'string', 'operatorType' => 'isNotNull', 'value' => null)); $compareStructure = '1'; $this->assertEquals($compareClauses, $metadata['clauses']); $this->assertEquals($compareStructure, $metadata['structure']); }