本文实例讲述了cakephp2.x多表联合查询join及使用分页查询的方法。分享给大家供大家参考,具体如下:
格式化参数:
public function getconditions($data){
$this->loadmodel("cm.loginhistory");
$conditions = array();
foreach ($data as $key=>$val){
if($key=='start_date'){
$conditions['loginhistory.logintime >=']=trim($val);
}elseif ($key=='end_date'){
$conditions['loginhistory.logouttime <=']=trim($val);
}elseif ($key=='selectvsoftid' and $val !=''){
$conditions['loginhistory.loginsubsystem like']='%'.trim($val).'%';
}elseif ($key=='username' and $val !=''){
$conditions['loginhistory.username like']='%'.trim($val).'%';
}elseif ($key=='vdevicename' and $val !=''){
$conditions['loginhistory.windowname like']='%'.trim($val).'%';
}elseif ($key=='selectvsoftid' and $val !=''){
$conditions['loginhistory.phdevicename like']='%'.trim($val).'%';
}
}
return $conditions;
}
分页查询:
$fields = array('loginhistory.windowname','loginhistory.loginsubsystem','virtualdevice.phdeviceid','loginhistory.userid', 'virtualdevice.systypeid','userinfo.username','"sum"(loginhistory.logouttime-loginhistory.logintime) moument','userinfo.username','deviceinfo.devicename');
$group=array('loginhistory.windowname', 'loginhistory.loginsubsystem', 'loginhistory.userid','userinfo.username','deviceinfo.devicename','virtualdevice.systypeid','virtualdevice.phdeviceid');
$this->paginate = array('conditions'=>$conditions,'fields'=>$fields,'group'=>$group,'limit'=>9,'joins' => array(
array(
'alias' => 'userinfo',
'table' => 'smm_userinfo',
'type' => 'left',
'conditions' => ' loginhistory.userid=userinfo.userid ',
),
array(
'alias' => 'virtualdevice',
'table' => 'et_nmvirtualdeviceinfo',
'type' => 'left',
'conditions' => ' loginhistory.windowname=virtualdevice.devicename ',
),
array(
'alias' => 'deviceinfo',
'table' => 'et_nmdeviceinfo',
'type' => 'left',
'conditions' => ' virtualdevice.phdeviceid=deviceinfo.deviceid ',
),
));
$loginhistory = $this->paginate('loginhistory');
$this->set('loginhistory',$loginhistory);
更多cakephp2.x多表联合查询join及使用分页查询的方法。