ThinkPHP/Library/Think/Model/MergeModel.class.php

(开头部分) 13KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace Think\Model;
use Think\Model;
/**
 * ThinkPHP 聚合模型扩展 
 */
class MergeModel extends Model {

    protected $modelList    =   array();    //  包含的模型列表 第一个必须是主表模型
    protected $masterModel  =   '';         //  主模型
    protected $joinType     =   'INNER';    //  聚合模型的查询JOIN类型
    protected $fk           =   '';         //  外键名 默认为主表名_id
    protected $mapFields    =   array();    //  需要处理的模型映射字段,避免混淆 array( id => 'user.id'  )

    /**
     * 架构函数
     * 取得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';
        }

    }

后面还有 343 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。