您好,欢迎访问一九零五行业门户网

onethink中的一个数据库联结问题

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
其它类似信息

推荐信息