Example #1
0
 /**
  * 架构函数
  * 取得DB类的实例对象 字段检查
  * @access public
  * @param string $name 模型名称
  * @param string $tablePrefix 表前缀
  * @param mixed $connection 数据库连接信息
  */
 public function __construct($name = '', $tablePrefix = '', $connection = '')
 {
     parent::__construct($name, $tablePrefix, $connection);
     // 聚合模型的字段信息
     if (empty($this->fields) && !empty($this->modelList)) {
         $fields = array();
         foreach ($this->modelList as $model) {
             // 获取模型的字段信息
             $result = $this->db->getFields(M($model)->getTableName());
             $_fields = array_keys($result);
             // $this->mapFields  =   array_intersect($fields,$_fields);
             $fields = array_merge($fields, $_fields);
         }
         $this->fields = $fields;
     }
     // 设置第一个模型为主表模型
     if (empty($this->masterModel) && !empty($this->modelList)) {
         $this->masterModel = $this->modelList[0];
     }
     // 主表的主键名
     $this->pk = M($this->masterModel)->getPk();
     // 设置默认外键名 仅支持单一外键
     if (empty($this->fk)) {
         $this->fk = strtolower($this->masterModel) . '_id';
     }
 }
Example #2
0
 /**
  * 动态方法实现
  * @access public
  * @param string $method 方法名称
  * @param array $args 调用参数
  * @return mixed
  */
 public function __call($method, $args)
 {
     if (strtolower(substr($method, 0, 8)) == 'relation') {
         $type = strtoupper(substr($method, 8));
         if (in_array($type, array('ADD', 'SAVE', 'DEL'), true)) {
             array_unshift($args, $type);
             return call_user_func_array(array(&$this, 'opRelation'), $args);
         }
     } else {
         return parent::__call($method, $args);
     }
 }
Example #3
0
 /**
  * 对保存到数据库的数据进行处理
  * @access protected
  * @param mixed $data 要操作的数据
  * @return boolean
  */
 protected function _facade($data)
 {
     // 检查序列化字段
     $data = $this->serializeField($data);
     return parent::_facade($data);
 }