示例#1
0
 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;
 }