public function setup() { $this->queryObject = new Tx_PtExtlist_Domain_QueryObject_Query(); // select $this->queryObject->addField('name'); $this->queryObject->addField('age'); // from $this->queryObject->addFrom('Users u'); $this->queryObject->addFrom('Groups g'); // where $this->queryObject->addCriteria(Tx_PtExtlist_Domain_QueryObject_Criteria::equals('name', 'Michael')); // group by $this->queryObject->addGroupBy('name'); $this->queryObject->addGroupBy('company'); // limit $this->queryObject->setLimit('10:10'); // sortings $this->queryObject->addSorting('test'); $this->queryObject->addSorting('test2', Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_DESC); }
/** * Build the group data query to retrieve the group data * * @param array Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fields * @return string */ protected function buildGroupDataQuery($fields) { $groupDataQuery = new Tx_PtExtlist_Domain_QueryObject_Query(); $displayField = $this->displayFields->getItemByIndex(0); if ($this->additionalTables != '') { $groupDataQuery->addFrom($this->additionalTables); } //TODO only works with SQL! $groupDataQuery->addField(sprintf('UPPER(LEFT(%1$s,1)) as firstLetter', $displayField->getTableFieldCombined())); $groupDataQuery->addSorting('firstLetter', Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_ASC); if ($this->showRowCount) { // TODO only works with SQL! $groupDataQuery->addField(sprintf('count("%s") as rowCount', $this->filterField->getTableFieldCombined())); } $groupDataQuery->addGroupBy('firstLetter'); return $groupDataQuery; }
/** * Build the group data query to retrieve the group data * * @param array Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fields * @return \Tx_PtExtlist_Domain_QueryObject_Query */ protected function buildGroupDataQuery($fields) { $groupDataQuery = new Tx_PtExtlist_Domain_QueryObject_Query(); foreach ($fields as $selectField) { $groupDataQuery->addField(Tx_PtExtlist_Utility_DbUtils::getAliasedSelectPartByFieldConfig($selectField)); } if ($this->additionalTables != '') { $groupDataQuery->addFrom($this->additionalTables); } $groupDataQuery->addSorting('elementCount', Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_DESC); if ($this->elementCountField !== NULL) { $groupDataQuery->addField(sprintf('%s as elementCount', $this->elementCountField->getTableFieldCombined())); } else { // TODO only works with SQL! $groupDataQuery->addField(sprintf('count("%s") as elementCount', $this->filterField->getTableFieldCombined())); } $groupDataQuery->addGroupBy($this->filterConfig->getFieldIdentifier()->getItemByIndex(0)->getIdentifier()); return $groupDataQuery; }
/** * Build the group data query to retrieve the group data * * @param array Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fields * @return Tx_PtExtlist_Domain_QueryObject_Query */ protected function buildGroupDataQuery($fields) { $groupDataQuery = new Tx_PtExtlist_Domain_QueryObject_Query(); foreach ($fields as $selectField) { $groupDataQuery->addField(Tx_PtExtlist_Utility_DbUtils::getAliasedSelectPartByFieldConfig($selectField)); } if ($this->additionalTables != '') { $groupDataQuery->addFrom($this->additionalTables); } foreach ($this->displayFields as $displayField) { /* @var $displayField Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig */ $groupDataQuery->addSorting($displayField->getIdentifier(), Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_ASC); } if ($this->showRowCount) { // TODO only works with SQL! $groupDataQuery->addField(sprintf('count("%s") as rowCount', $this->filterField->getTableFieldCombined())); } $groupFields = array(); foreach ($this->getFieldsRequiredToBeSelected() as $field) { /* @var $field Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig */ $groupFields[] = $field->getIdentifier(); } $groupDataQuery->addGroupBy(implode(',', $groupFields)); return $groupDataQuery; }
public function testGetFrom() { $query = new Tx_PtExtlist_Domain_QueryObject_Query(); $query->addFrom('test'); $this->assertTrue(method_exists($query, 'getFrom')); $froms = $query->getFrom(); $this->assertTrue(in_array('test', $froms)); }