【问题标题】:How to paginate a custom query it in cakephp如何在 cakephp 中对自定义查询进行分页
【发布时间】:2014-11-28 12:06:09
【问题描述】:
$l = $this->Manager->query("SELECT leave_application.id
         from leave_application INNER JOIN emp_managers ON (leave_application.employee_id = emp_managers.employee_id) 
         WHERE emp_managers.manager_id =" . $this->Session->read('Auth.Manager.id')
         ." AND leave_application.approve_1 !=". $id ." AND leave_application.approve_2 != ". $id 
         ." AND leave_application.approve_3 != ". $id);

编辑
这是我尝试过的,但没有用:

function paginate($conditions, $fields, $order, $limit, $page, $recursive, $extra)
{
    return $this->query("SELECT leave_application.id as leaveID, leave_application.approve_1,leave_application.employee_id,
        leave_application.approve_2, leave_application.days_desired ,leave_application.approve_3,leave_application.leave_from, 
        leave_application.leave_to, employees.id, employees.firstname , employees.lastname, emp_managers.employee_id as empmanagers_id 
        from leave_application INNER JOIN emp_managers ON (leave_application.employee_id = emp_managers.employee_id) 
        INNER JOIN employees on (employees.id = emp_managers.employee_id)
        WHERE emp_managers.manager_id =" . CakeSession::read('Auth.Manager.id')
    ." and leave_application.approve_1 !=". CakeSession::read('Auth.Manager.id')
    ." and leave_application.approve_2 != ". CakeSession::read('Auth.Manager.id')
    ." and leave_application.approve_3 != ". CakeSession::read('Auth.Manager.id'));
}

function paginateCount($conditions, $recursive, $extra)
{
    return $this->query("SELECT COUNT(*) as count  
        from leave_application INNER JOIN emp_managers ON (leave_application.employee_id = emp_managers.employee_id) 
        INNER JOIN employees on (employees.id = emp_managers.employee_id)
        WHERE emp_managers.manager_id =" . CakeSession::read('Auth.Manager.id')
    ." and leave_application.approve_1 !=". CakeSession::read('Auth.Manager.id')
    ." and leave_application.approve_2 != ". CakeSession::read('Auth.Manager.id') 
    ." and leave_application.approve_3 != ". CakeSession::read('Auth.Manager.id'));
}

【问题讨论】:

标签: php sql cakephp


【解决方案1】:

将这些方法添加到您的控制器模型中,使用相同的查询没有限制关键字

function paginate($conditions, $fields, $order, $limit, $page, $recursive, $extra)
{
    return $this->query('SELECT ...');
}

function paginateCount($conditions, $recursive, $extra)
{
    return $this->query('SELECT COUNT(.....');
}

【讨论】:

  • 我不明白先生
  • 使用通常在 cake php 中使用的分页。如果您想使用自定义查询进行分页,而不是在模型(管理器)中添加这两种方法。因此,该特定模型的默认分页方法将被覆盖。
  • 查询实际上是在除经理模型之外的模型上工作
  • 我已经按照你说的做了,但是我得到了以下错误
  • 致命错误错误:不支持的操作数类型文件:C:\wamp\www\leave.com\lib\Cake\Controller\Component\PaginatorComponent.php 行:214 注意:如果要自定义此错误信息,创建 app\View\Errors\fatal_error.ctp
猜你喜欢
  • 2015-08-20
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 2020-01-11
  • 1970-01-01
  • 2015-06-19
相关资源
最近更新 更多