首页 / PHP / onethink中的一个数据库联结问题
onethink中的一个数据库联结问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了onethink中的一个数据库联结问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4524字,纯文字阅读大概需要7分钟。
内容图文
![onethink中的一个数据库联结问题](/upload/InfoBanner/zyjiaocheng/243/8ad251bb7cc3418d8bf1ef57d192945c.jpg)
我直接把代码粘上来了
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
内容总结
以上是互联网集市为您收集整理的onethink中的一个数据库联结问题全部内容,希望文章能够帮你解决onethink中的一个数据库联结问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。