Prepare parameters. // hier $selection = array( 'stock', 'type', 'damageTotal', 'model', 'make', 'valuation', 'sales', 'valuator', 'priceGuide', 'MAX(offer.amount) AS highestOffer', 'MIN(offer.amount) AS lowestOffer', 'COUNT(offer.id) AS numOffers', 'MIN(offer.created) AS firstOfferDate' ); $join = array(); $leftJion = array(); $where = array(); $params = array(); $query = 'SELECT [SELECTION] ' . 'FROM \Valuation\Entity\Valuation valuation ' . ' JOIN valuation.stock stock ' . ' JOIN stock.type type ' . ' JOIN stock.damageTotal damageTotal ' . ' JOIN type.model model ' . ' JOIN model.make make ' . ' [JOIN] ' . ' LEFT JOIN valuation.valuatedBy valuator ' . ' LEFT JOIN valuation.salesProfile sales ' . ' LEFT JOIN stock.priceGuide priceGuide ' . ' LEFT JOIN priceGuide.offers offer ' . ' [LEFT-JOIN] ' . '[WHERE] ' . 'GROUP BY valuation.id ' . 'ORDER BY valuation.created ASC'; #-> Construct details. $authData = \Utility\Registry::getAuthData(); switch (\Utility\Registry::getUserType()) { case 'B4C User': $groupFilter = \Utility\Registry::getSudo('Group', false); if ($groupFilter) { $this->_queries['Group'] = \Utility\Registry::getSudo('GroupName'); $join[] = 'JOIN stock.company company'; $where[] = 'IDENTITY(company.group) = :group'; $params['group'] = $groupFilter; } $divisionFilter = \Utility\Registry::getSudo('Division', false); if ($divisionFilter) { $this->_queries['Division'] = \Utility\Registry::getSudo('DivisionName'); $join[] = 'JOIN stock.company company'; $where[] = 'IDENTITY(company.groupDivision) = :groupDivision'; $params['groupDivision'] = $divisionFilter; } $companyFilter = \Utility\Registry::getSudo('Company', false); if ($companyFilter) { $this->_queries['Company'] = \Utility\Registry::getSudo('CompanyName'); $where[] = 'IDENTITY(stock.company) = :company'; $params['company'] = $companyFilter; } break; case 'Group User': $join[] = 'JOIN stock.company company'; $where[] = 'IDENTITY(company.group) = :group'; $params['group'] = $authData['company']['group']['id']; $divisionFilter = \Utility\Registry::getSudo('Division', false); if ($divisionFilter) { $this->_queries['Division'] = \Utility\Registry::getSudo('DivisionName'); $join[] = 'JOIN stock.company company'; $where[] = 'IDENTITY(company.groupDivision) = :groupDivision'; $params['groupDivision'] = $divisionFilter; } $companyFilter = \Utility\Registry::getSudo('Company', false); if ($companyFilter) { $this->_queries['Company'] = \Utility\Registry::getSudo('CompanyName'); $where[] = 'IDENTITY(stock.company) = :company'; $params['company'] = $companyFilter; } break; case 'Dealer Principle': $join[] = 'JOIN stock.company company'; $where[] = 'IDENTITY(company.groupDivision) = :groupDivision'; $params['groupDivision'] = $authData['company']['groupDivision']['id']; $companyFilter = \Utility\Registry::getSudo('Company', false); if ($companyFilter) { $this->_queries['Company'] = \Utility\Registry::getSudo('CompanyName'); $where[] = 'IDENTITY(stock.company) = :company'; $params['company'] = $companyFilter; } break; default: $where[] = 'IDENTITY(stock.company) = :company'; $params['company'] = $authData['company']['id']; break; } if (isset($this->_input['jobState'])) { $this->_queries['Status'] = $this->_input['jobState']; $where[] = 'valuation.jobState >= :jobState'; $params['jobState'] = $this->_input['jobState']; } if (isset($this->_input['dateFrom'])) { $this->_queries['Date Range From'] = $this->_input['dateFrom']; $where[] = 'valuation.created >= :dateFrom'; $params['dateFrom'] = new \DateTime($this->_input['dateFrom']); } if (isset($this->_input['dateTo'])) { $this->_queries['Date Range Until'] = $this->_input['dateTo']; $where[] = 'valuation.created <= :dateTo'; $params['dateTo'] = new \DateTime($this->_input['dateTo']); } #-> Finalize query. $query = str_replace(array( '[SELECTION]', '[JOIN]', '[LEFT-JOIN]', '[WHERE]' ), array( implode(', ', $selection) . ' ', implode(' ', $join) . ' ', implode(' ', $leftJion) . ' ', !empty($where) ? 'WHERE ' . implode(' AND ', $where) . ' ' : ' ' ), $query); #-> Collect data. $query = $this->em->createQuery($query); !empty($params) && $query->setParameters($params); $this->_data = $query->getScalarResult(); $data = $this->_data = $query->getScalarResult(); //console.log($this->_data = $query->getScalarResult()); var_dump('test',$data); } }