2016-03-01 113 views
0

我想分頁CakePHP 3中的MySQL存儲過程的結果。目前,我的存儲過程按預期工作,我可以在CakePHP中成功調用它,和paginator幾乎是應該的。它將刪除一列(customer_name),並顯示user_id而不是給定user_id的用戶名。我正在使用CacheSP插件來調用SP。 https://github.com/genellern/Cakephp3-CacheSPCakePHP 3 Paginator自定義查詢(存儲過程)從結果中刪除列

這裏是我的存儲過程:

CREATE DEFINER=`root`@`localhost` PROCEDURE `ordersIndex`() 
BEGIN 
SELECT o.id, o.order_number, DATE_FORMAT(o.created, '%m/%d/%y %h:%s %p') AS 
created, d.customer_name, o.order_amount, u.username, o.status FROM orders AS o 
INNER JOIN order_details AS d 
ON o.order_number=d.order_number 
INNER JOIN users as u 
ON o.created_by=u.id; 
END 

下面是代碼來調用存儲過程:

$orderQuery = $this->Orders->callSP('ordersIndex'); 
$orderRecords = $orderQuery->fetchAll('assoc'); 
debug($orderRecords); 
$orderQuery->closeCursor(); 

將會產生這樣的結構:

[ 
    (int) 0 => [ 
    'id' => '43', 
    'order_number' => '51', 
    'created' => '02/17/16 06:10 PM', 
    'customer_name' => 'cust test', 
    'order_amount' => '72015.00', 
    'username' => 'BSounder', 
    'status' => 'pending' 
    ], 
    (int) 1 => [ 
    'id' => '44', 
    'order_number' => '84', 
    'created' => '02/18/16 05:06 PM', 
    'customer_name' => 'cust test', 
    'order_amount' => '500.00', 
    'username' => 'BSounder', 
    'status' => 'pending' 
    ], 
.... 
] 

要獲得paginator工作瓦特/自定義查詢,我跟着/調整了這個鏈接的兩個功能: http://technet.weblineindia.com/web/pagination-with-custom-queries-in-cakephp/ 這就造成了這些功能:

public function paginate($conditions, $fields, $order, $limit, $page =1, 
     $recursive = null, $extra = array()) 
{ 
    $recursive = -1; 
    $this->useTable = false; 
    $results = $this->Orders->callSP('ordersIndex'); 
    debug($results); 
    return $results; 
} 

public function paginateCount($conditions = null, $recursive = 0, $extra = array()) 
{ 
    $this->recursive = $recursive; 
    $results = $this->Orders->callSP('ordersIndex'); 
    return count($results); 
} 

當查看訂單/指數,一切正常,除了客戶名稱欄爲空,由列創建顯示USER_ID,而不是用戶的用戶名。任何幫助將非常感謝! :)

回答

0

我放棄了使用Cake的默認分頁。相反,我使用了DataTables,到目前爲止我對此非常滿意。我可以根據存儲過程的結果填充表,然後Datatables處理分頁。甚至包括搜索和更改每頁結果的數量。

https://datatables.net/