关联表查询数据库

来源:互联网 发布:农村淘宝宣传视频 编辑:程序博客网 时间:2024/05/22 05:18

1. 调用方法

$this->getRelationList(M(),$map,BD_PREFIX."deal as d left join ".DB_PREFIX."user as u on d.user_id=u.id ","d.*,u.site_id",“d.id”);

$map指的是查询条件数组


2.实现函数

protected function getRelationList($model,$map, $table, $field="*" ,$sortBy = '', $asc = false) {
//排序字段 默认为主键名
if (isset ( $_REQUEST ['_order'] )) {
$order = $_REQUEST ['_order'];
} else {
$order = ! empty ( $sortBy ) ? $sortBy : $model->getPk ();
}
//排序方式默认按照倒序排列
//接受 sost参数 0 表示倒序 非0都 表示正序
if (isset ( $_REQUEST ['_sort'] )) {
$sort = $_REQUEST ['_sort'] ? 'asc' : 'desc';
} else {
$sort = $asc ? 'asc' : 'desc';
}


//取得满足条件的记录数
$count =  $model->table($table)->where($map)->count();  //$model->where ( $map )->count ( 'id' );



if ($count > 0) {
//创建分页对象
if (! empty ( $_REQUEST ['listRows'] )) {
$listRows = $_REQUEST ['listRows'];
} else {
$listRows = '';
}
$p = new Page ( $count, $listRows );
//分页查询数据

$voList =$model->table($table)->where($map)->field($field)->order(  $order . "  " . $sort)->limit($p->firstRow . ',' . $p->listRows)->findAll ();  //$model->field($filed)->where($map)->order( "`" . $order . "` " . $sort)->limit($p->firstRow . ',' . $p->listRows)->findAll ( );


 
//分页跳转的时候保证查询条件
foreach ( $map as $key => $val ) {
if (! is_array ( $val )) {
$p->parameter .= "$key=" . urlencode ( $val ) . "&";
}
}
//分页显示

$page = $p->show ();
//列表排序显示
$sortImg = $sort; //排序图标
$sortAlt = $sort == 'desc' ? l("ASC_SORT") : l("DESC_SORT"); //排序提示
$sort = $sort == 'desc' ? 1 : 0; //排序方式
//模板赋值显示


$this->assign ( 'list', $voList );
$this->assign ( 'sort', $sort );
$this->assign ( 'order', $order );
$this->assign ( 'sortImg', $sortImg );
$this->assign ( 'sortType', $sortAlt );
$this->assign ( "page", $page );
$this->assign ( "nowPage",$p->nowPage);
}
return;
}

0 0