Example #1
0
 /**
  * @param $name
  * @param $alias
  * @return Model_Query
  * @throws \Exception
  */
 public function createQuery($name, $alias = null)
 {
     if (isset(self::$models[$name])) {
         $query = new Model_Query($name, Database::getCurrentDB(), $alias);
         return $query;
     }
     $trace = debug_backtrace();
     throw new \Exception(sprintf('Not Found model : %s of %s line %d', $name, $trace[0]['file'], $trace[0]['line']));
 }
Example #2
0
 function __construct()
 {
     $this->db = Database::getCurrentDB();
     $this->table_options = array("engine" => Database::ENGINE_DEFAULT);
     $parents_class = class_parents($this);
     $class_name = get_class($this);
     $class = array_merge($parents_class, array($class_name => $class_name));
     $this->table_fields = array();
     foreach ($class as $class_name) {
         $fields = null;
         if (isset(self::$class_fields[$class_name])) {
             $fields = self::$class_fields[$class_name];
         } else {
             $fields = array();
             $vars = get_class_vars($class_name);
             foreach ($vars as $k => $v) {
                 $method_name = str_replace('_', '', $k);
                 if (method_exists($this, $method_name . 'Column')) {
                     $v = $method_name . 'Column';
                     $key = $k;
                     try {
                         $field = $this->{$v}();
                     } catch (PMPException $e) {
                         throw new PMPException($class_name . '->' . $v . '() is return value error.' . $e->getMessage());
                     }
                     if ($field && is_object($field) && $field instanceof ModelColumn) {
                         if (!$field->getName()) {
                             $field->setName($key);
                         }
                         $fields[$key] = $field;
                         if ($field->isCompareColumn()) {
                             $self = $field->getSelfColumn();
                             if (!isset(self::$from_connection[$class_name])) {
                                 self::$from_connection[$class_name] = array();
                             }
                             if (!isset(self::$from_connection[$class_name][$self])) {
                                 self::$from_connection[$class_name][$self] = array();
                             }
                             self::$from_connection[$class_name][$self][$k] = $k;
                         }
                     } else {
                         throw new PMPException($class_name . '->' . $v . '() must be return ModelColumn');
                     }
                 }
             }
             self::$class_fields[$class_name] = $fields;
         }
         if ($fields) {
             foreach ($fields as $k => $f) {
                 $this->table_fields[$k] = $f;
             }
         }
     }
 }