public function testWhere() { $query = new Query(); $query->setMappingConfig($this->config); $query->from('Oro\\Bundle\\DataBundle\\Entity\\Product'); $query->where('or', 'all_data', '=', 'test', 'string'); $queryParams = $query->getOptions(); $this->assertEquals('or', $queryParams[0]['type']); $this->assertEquals('all_data', $queryParams[0]['fieldName']); }
public function testBeforeSearchEvent() { $query = new Query(); $query->from('testEntity')->andWhere('name', '~', 'string'); $this->securityFacade->expects($this->once())->method('getOrganizationId')->will($this->returnValue(5)); $event = new BeforeSearchEvent($query); $this->listener->beforeSearchEvent($event); $wherePart = $query->getOptions(); $this->assertCount(2, $wherePart); $expexted = ['fieldName' => 'organization', 'condition' => 'in', 'fieldValue' => [5, 0], 'fieldType' => 'integer', 'type' => 'and']; $this->assertEquals($expexted, $wherePart[1]); }
/** * @param Query $query * @return string * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function combineQueryString(Query $query) { $selectString = $query->getQuery(); $fromString = ''; if ($query->getFrom()) { $fromString .= ' from ' . implode(', ', $query->getFrom()); } $whereParts = array(); foreach ($query->getOptions() as $whereOptions) { if (is_array($whereOptions['fieldValue'])) { $whereOptions['fieldValue'] = '(' . implode(', ', $whereOptions['fieldValue']) . ')'; } $whereParts[] = sprintf('%s((%s)%s %s %s)', $whereOptions['type'], $whereOptions['fieldType'], $whereOptions['fieldName'], $whereOptions['condition'], $whereOptions['fieldValue']); } $whereString = ''; if ($whereParts) { $whereString .= ' where ' . implode(' ', $whereParts); } $orderByString = ''; if ($query->getOrderBy()) { $orderByString .= ' ' . $query->getOrderBy(); } if ($query->getOrderDirection()) { $orderByString .= ' ' . $query->getOrderDirection(); } if ($orderByString) { $orderByString = ' order by' . $orderByString; } $limitString = ''; if ($query->getMaxResults() && $query->getMaxResults() != Query::INFINITY) { $limitString = ' limit ' . $query->getMaxResults(); } $offsetString = ''; if ($query->getFirstResult()) { $offsetString .= ' offset ' . $query->getFirstResult(); } return $selectString . $fromString . $whereString . $orderByString . $limitString . $offsetString; }