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