cakephp2.X多表联合查询join及使用分页查询的方法

 更新时间:2017年02月23日 14:27:06   作者:design321  
这篇文章主要介绍了cakephp2.X多表联合查询join及使用分页查询的方法,结合实例形式简单分析了cakephp查询及分页操作相关技巧,需要的朋友可以参考下

本文实例讲述了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);

更多关于php框架相关内容感兴趣的读者可查看本站专题:《php优秀开发框架总结》、《codeigniter入门教程》、《ThinkPHP入门教程》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • thinkPHP使用post方式查询时分页失效的解决方法

    thinkPHP使用post方式查询时分页失效的解决方法

    这篇文章主要介绍了thinkPHP使用post方式查询时分页失效的解决方法,通过使用JavaScript动态修改页面元素结合thinkPHP查询语句解决分页失效的问题,需要的朋友可以参考下
    2015-12-12
  • phpmyadmin 常用选项设置详解版

    phpmyadmin 常用选项设置详解版

    phpmyadmin常用选项设置,以phpmyadmin2.5.4为例
    2010-03-03
  • php+jquery+html实现点击不刷新加载更多的实例代码

    php+jquery+html实现点击不刷新加载更多的实例代码

    下面小编就为大家带来一篇php+jquery+html实现点击不刷新加载更多的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • php发送post请求函数分享

    php发送post请求函数分享

    这篇文章主要介绍了一个php发送post请求的函数,开发中经常会用到,需要的朋友可以参考下
    2014-03-03
  • Yii框架核心组件类实例详解

    Yii框架核心组件类实例详解

    这篇文章主要介绍了Yii框架核心组件类,结合实例形式详细分析了Yii框架中成员变量扩展、事件模型及行为类绑定相关原理与操作技巧,需要的朋友可以参考下
    2019-08-08
  • 使用swoole扩展php websocket示例

    使用swoole扩展php websocket示例

    WebSocket规范的目标是在浏览器中实现和服务器端双向通信。双向通信可以拓展浏览器上的应用类型,如果你想要用PHP来写websocket应用,那swoole_framework一定是最好的选择,需要的朋友可以参考下
    2014-02-02
  • PHP后台备份MySQL数据库的源码实例

    PHP后台备份MySQL数据库的源码实例

    今天小编就为大家分享一篇关于PHP后台备份MySQL数据库的源码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • laravel Validator ajax返回错误信息的方法

    laravel Validator ajax返回错误信息的方法

    今天小编就为大家分享一篇laravel Validator ajax返回错误信息的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • php函数重载的替代方法--伪重载详解

    php函数重载的替代方法--伪重载详解

    对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。而弱类型本来就不区分,所以无法通过这些来实现。但是,可以通过下面的方法来实现简单的伪重载吧。
    2015-05-05
  • PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁

    PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁

    在做项目的时候,经常需要一些会员系统相关的内容,比如头像的上传与裁剪等等,下面将这块内容分享给大家
    2014-06-06

最新评论