先上代码:
//工作圈信息流
public function homepage(){
$user_id = $this->checkaccess();
$this->getNotice('homepage');
$this->signpermission();
$remarkM = M("e2wremark");
$this->assign("totalnum",$remarkM->count());
//日报信息流
$dailyreportM = M('dailyreport');
$dailyReportList = $dailyreportM->alias('d')->field('d.id,u.cnname,d.content,d.time')->join('inner join users as u on d.user_id = u.id')->select();
//会议纪要信息流
$e2wMeetingM = M("e2wmeetingrecord");
$meetingRecordList = $e2wMeetingM->alias('m')->field('m.id,u.cnname,m.content,m.time')->join('inner join users as u on m.user_id = u.id')->select();
//通告信息流
$e2wnoticesM = M("e2wnotices");
$noticeList = $e2wnoticesM->alias('n')->field('n.id,u.cnname,n.content,n.time')->join('inner join users as u on n.user_id = u.id')->select();
//新闻信息流
$newsM = M("e2wnews");
$newsList = $newsM->alias('ne')->field('ne.id,u.cnname,ne.content,ne.time')->join('inner join users as u on ne.user_id = u.id')->select();
//照片信息流
$pictureM = M('picture');
$pictureList = $pictureM->alias('p')->field('p.id,u.cnname,p.title as content,p.date as time')->join('inner join users as u on p.user_id = u.id')->select();
//var_dump($pictureList);
//数据整合
$data = array_merge_recursive($dailyReportList,$meetingRecordList,$noticeList,$newsList,$pictureList);
//数组排序
//array_multisort(array_column($data,'time'),SORT_DESC,$data);
array_multisort($this->array_column_diy($data,'time'),SORT_DESC,$data);
//var_dump($data);
//分页输出
$p = $_GET['p'] ? $_GET['p'] : 1;
$start = ($p - 1)*10;
$end = $p*10;
$data_tmp = array_slice($data,$start,$end);
//分页输出
import('ORG.Util.Page');
$Page = new \Page(count($data),10);
$Page->setConfig('prev','<');
$Page->setConfig('header','条记录');
$Page->setConfig('next','>');
$Page->setConfig('first','首页');
$Page->setConfig('last','末页');
$Page->setConfig('theme', ' %totalRow% %header% %nowPage%/%totalPage% 页 %first% %upPage% %linkPage% %downPage% %end%');
$show = $Page->show();// 分页显示输出
$this->assign('page',$show);// 赋值分页输出
$this->assign('data', $data_tmp);
$this->display();
}
以上是公司后台系统需要开发一个数据流功能,将好几张表的数据(各个表之间并无联系,字段也各不相同)整合到一个页面,按时间轴排序。
自定义array_column也是因为该项目php低(array_column需要php5.5+),array_merge_recursive是合并数组,array_slice是做分页