我目前正在开发cakePHP项目。我卡住了。
我创建了一个使用MSSQL视图作为表格的模型:
<?php
class OrderList extends AppModel{
public $useTable = 'vOrderList';
public $primaryKey = 'OrderNumber';
public $order = array(
"OrderList.OrderNumber"=>"desc"
);
}
在sepreate model的控制器中,我正在加载此自定义模型并尝试对索引页的结果进行分页:
$this->loadModel("OrderList");
$this->paginate = array(
"OrderList" => array(
'limit'=>10,
'contain'=>array()
);
);
$results = $this->paginate("OrderList");
然而,查询花了太长时间!
加载页面需要8秒钟! 但是,如果我直接在mssql中打开视图表,则只需几毫秒即可加载。
我无法弄明白为什么!
当我加载除我创建的视图之外的任何其他模型时,它完美无缺。它只适用于我制作的自定义视图表
如果有人有任何想法,我可以使用你的帮助!
提前致谢!
答案 0 :(得分:0)
好吧我明白了。它计算了vOrderList中的条目数,这是大部分时间都在进行的。我改变了我的OrderList模型来代替实际的订单表。
/**
* Overridden paginate method
*/
public function paginate($conditions, $fields, $order, $limit, $page = 1,
$recursive = null, $extra = array()) {
$recursive = -1;
return $this->find(
'all',
compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group')
);
}
/**
* Overridden paginateCount method
*/
public function paginateCount($conditions = null, $recursive = 0,
$extra = array()) {
$sql =
"
SELECT COUNT(*) AS [count] FROM [CustomerOrder] AS [Order] WHERE 1 = 1
";
$this->recursive = $recursive;
$results = $this->query($sql);
return count($results);
}