public function queryModels(Query $query) { $class = $query->getModel(); $model = new $class(); $tablename = $model->getTablename(); // build a DB query from the model query $dbQuery = $this->app['db']->select($this->prefixSelect('*', $tablename))->from($tablename)->where($this->prefixWhere($query->getWhere(), $tablename))->limit($query->getLimit(), $query->getStart())->orderBy($this->prefixSort($query->getSort(), $tablename)); // join conditions foreach ($query->getJoins() as $join) { list($foreignModel, $column, $foreignKey) = $join; if (is_string($foreignModel)) { $foreignModel = new $foreignModel(); } $foreignTablename = $foreignModel->getTablename(); $condition = $this->prefixColumn($column, $tablename) . '=' . $this->prefixColumn($foreignKey, $foreignTablename); $dbQuery->join($foreignTablename, $condition); } try { $data = $dbQuery->all(); } catch (PDOException $original) { $e = new AdapterException('An error occurred in the database adapter while performing the ' . $model::modelName() . ' query'); $e->setException($original); throw $e; } return $data; }