【发布时间】:2014-03-19 13:32:10
【问题描述】:
我的控制器中有一个名为 view 的函数,代码如下:
$conditions = array(
'OR'=>array(
'User.id'=>$this->Auth->user("id"),
'Sharing.user_id' => $this->Auth->user("id"),
)
);
$joins = array(
array('table' => 'clists_sharings',
'alias' => 'Sharing',
'type' => 'LEFT',
'conditions' => array(
'Sharing.user_id' => $this->Auth->user("id"),
'Sharing.clist_id = Clist.id'
)
),
array('table' => 'clists_tags',
'alias' => 'Tag',
'type' => 'LEFT',
'conditions' => array(
'Tag.clist_id = Clist.id'
)
),
array('table' => 'clist_orders',
'alias' => 'DisplayOrder',
'type' => 'LEFT',
'conditions' => array(
'DisplayOrder.clist_id = Clist.id',
'DisplayOrder.user_id' => $this->Auth->user("id")
)
)
);
$this->Paginator->settings = array(
'conditions' => $conditions,
'limit' => 15,
'joins' => $joins,
'recursive'=>1,
'order'=>array("DisplayOrder.display_order"=>"ASC"),
'group'=>'Clist.id'
);
$lists = $this->Paginator->paginate( 'Clist' );
$this->set('lists', $lists);
我有这个请求的 sql 日志:
SELECT `Clist`.`id`, `Clist`.`user_id`, `Clist`.`title`, `Clist`.`list_type`, `Clist`.`archived`, `Clist`.`created`, `Clist`.`modified`, `User`.`id`, `User`.`full_name`, `User`.`username`, `User`.`password`, `User`.`email`, `User`.`role_id`, `User`.`is_activated`, `User`.`created`, `User`.`modified`, `User`.`reset`, `User`.`reset_hash` FROM `conduit`.`dll_clists` AS `Clist` LEFT JOIN `conduit`.`dll_clists_sharings` AS `Sharing` ON (`Sharing`.`user_id` = '1' AND `Sharing`.`clist_id` = `Clist`.`id`) LEFT JOIN `conduit`.`dll_clists_tags` AS `Tag` ON (`Tag`.`clist_id` = `Clist`.`id`) LEFT JOIN `conduit`.`dll_clist_orders` AS `DisplayOrder` ON (`DisplayOrder`.`clist_id` = `Clist`.`id` AND `DisplayOrder`.`user_id` = '1') LEFT JOIN `conduit`.`dll_users` AS `User` ON (`Clist`.`user_id` = `User`.`id`) WHERE ((`User`.`id` = 1) OR (`Sharing`.`user_id` = '1')) GROUP BY `Clist`.`id` LIMIT 15
此处缺少 order by 子句。任何人都可以指出我做错了什么。
谢谢。
【问题讨论】:
-
一行尝试:
'order' => array("DisplayOrder.display_order ASC") -
试过但没用..
标签: cakephp cakephp-2.4