onethink中的一個資料庫連接問題

來源:互聯網
上載者:User
關鍵字 php
onethink的Admin/Article/getDocumentList()方法;
我直接把代碼粘上來了

protected function getDocumentList($cate_id=0,$model_id=null,$position=null,$field=true,$group_id=null){        /* 查詢條件初始化 */        $map = array();        if(isset($_GET['title'])){            $map['title']  = array('like', '%'.(string)I('title').'%');        }        if(isset($_GET['status'])){            $map['status'] = I('status');            $status = $map['status'];        }else{            $status = null;            $map['status'] = array('in', '0,1,2');        }        if ( isset($_GET['start']) ) {            $map['update_time'][] = array('egt',strtotime(I('start')));        }        if ( isset($_GET['end']) ) {            $map['update_time'][] = array('elt',24*60*60 + strtotime(I('end')));        }        if ( isset($_GET['nickname']) ) {            $map['uid'] = M('Member')->where(array('nickname'=>I('nickname')))->getField('uid');        }        if(!is_administrator(UID)){            $map["uid"] = UID;        }        // 構建列表資料        $Document = M('Document');        if($cate_id){            $map['category_id'] =   $cate_id;        }        $map['pid']         =   I('pid',0);        if($map['pid']){ // 子文檔列表忽略分類            unset($map['category_id']);        }        $Document->alias('DOCUMENT');        if(!is_null($model_id)){            $map['model_id']    =   $model_id;            if(is_array($field) && array_diff($Document->getDbFields(),$field)){                $modelName  =   M('Model')->getFieldById($model_id,'name');                $Document->join('__DOCUMENT_'.strtoupper($modelName).'__ '.$modelName.' ON DOCUMENT.id='.$modelName.'.id');                $key = array_search('id',$field);                if(false  !== $key){                    unset($field[$key]);                    $field[] = 'DOCUMENT.id';                }            }                    }        if(!is_null($position)){            $map[] = "position & {$position} = {$position}";        }        if(!is_null($group_id)){            $map['group_id']    =    $group_id;        }        $list = $this->lists($Document,$map,'level DESC,DOCUMENT.id DESC',$field);        if($map['pid']){            // 擷取上級文檔            $article    =   $Document->field('id,title,type')->find($map['pid']);            $this->assign('article',$article);        }        //檢查該分類是否允許發布內容        $allow_publish  =   get_category($cate_id, 'allow_publish');        $this->assign('status', $status);        $this->assign('allow',  $allow_publish);        $this->assign('pid',    $map['pid']);        $this->meta_title = '文檔列表';        return $list;    }

其中

$Document->join('__DOCUMENT_'.strtoupper($modelName).'__ '.$modelName.' ON DOCUMENT.id='.$modelName.'.id');

這段連接看不懂啊,有人能幫我解釋一下嗎,我知道'__DOCUMENT_'.strtoupper($modelName)代表另一個模型。'__ '.$modelName.'這個就不知道有什麼用了。

回複內容:

onethink的Admin/Article/getDocumentList()方法;
我直接把代碼粘上來了

protected function getDocumentList($cate_id=0,$model_id=null,$position=null,$field=true,$group_id=null){        /* 查詢條件初始化 */        $map = array();        if(isset($_GET['title'])){            $map['title']  = array('like', '%'.(string)I('title').'%');        }        if(isset($_GET['status'])){            $map['status'] = I('status');            $status = $map['status'];        }else{            $status = null;            $map['status'] = array('in', '0,1,2');        }        if ( isset($_GET['start']) ) {            $map['update_time'][] = array('egt',strtotime(I('start')));        }        if ( isset($_GET['end']) ) {            $map['update_time'][] = array('elt',24*60*60 + strtotime(I('end')));        }        if ( isset($_GET['nickname']) ) {            $map['uid'] = M('Member')->where(array('nickname'=>I('nickname')))->getField('uid');        }        if(!is_administrator(UID)){            $map["uid"] = UID;        }        // 構建列表資料        $Document = M('Document');        if($cate_id){            $map['category_id'] =   $cate_id;        }        $map['pid']         =   I('pid',0);        if($map['pid']){ // 子文檔列表忽略分類            unset($map['category_id']);        }        $Document->alias('DOCUMENT');        if(!is_null($model_id)){            $map['model_id']    =   $model_id;            if(is_array($field) && array_diff($Document->getDbFields(),$field)){                $modelName  =   M('Model')->getFieldById($model_id,'name');                $Document->join('__DOCUMENT_'.strtoupper($modelName).'__ '.$modelName.' ON DOCUMENT.id='.$modelName.'.id');                $key = array_search('id',$field);                if(false  !== $key){                    unset($field[$key]);                    $field[] = 'DOCUMENT.id';                }            }                    }        if(!is_null($position)){            $map[] = "position & {$position} = {$position}";        }        if(!is_null($group_id)){            $map['group_id']    =    $group_id;        }        $list = $this->lists($Document,$map,'level DESC,DOCUMENT.id DESC',$field);        if($map['pid']){            // 擷取上級文檔            $article    =   $Document->field('id,title,type')->find($map['pid']);            $this->assign('article',$article);        }        //檢查該分類是否允許發布內容        $allow_publish  =   get_category($cate_id, 'allow_publish');        $this->assign('status', $status);        $this->assign('allow',  $allow_publish);        $this->assign('pid',    $map['pid']);        $this->meta_title = '文檔列表';        return $list;    }

其中

$Document->join('__DOCUMENT_'.strtoupper($modelName).'__ '.$modelName.' ON DOCUMENT.id='.$modelName.'.id');

這段連接看不懂啊,有人能幫我解釋一下嗎,我知道'__DOCUMENT_'.strtoupper($modelName)代表另一個模型。'__ '.$modelName.'這個就不知道有什麼用了。

起別名 相當於AS

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.