mysql - CAKEPHP中的ISNULL不能正常工作

  显示原文与译文双语对照的内容
0 0

我使用 LEFT JOIN,因此在消息表中获取is_read列的空值。 当排序时,我希望在底部保留空值。 我在paginator里使用这个。 下面是我执行相同操作的代码:


$this->Paginator->settings = array(
 'fields' => array('User.*'),
 'joins' => array(
 array('table' => 'messages',
 'alias' => 'Message',
 'type' => 'LEFT',
 'conditions' => array(
 'User.id = Message.user_from_id'
 )
 ),
 ),
 'limit' => 20,
 'group' => array('User.id'),
 'order' => array('ISNULL(Message.is_read)' => 'asc','Message.is_read' => 'asc', 'Message.created' => 'asc'),
 );

Cakephp为此生成的查询如下所示:


SELECT `User`.*, (CONCAT(`User`.`first_name`, ' ', `User`.`last_name`)) AS `User__full_name` FROM `srs_development`.`users` AS `User` LEFT JOIN `srs_development`.`messages` AS `Message` ON (`User`.`id` = `Message`.`user_from_id`) WHERE 1 = 1 GROUP BY `User`.`id` ORDER BY `Message`.`is_read` asc, `Message`.`created` asc LIMIT 20

ISNULL函数在最终查询中被省略。 另外,如果可能的话,请在不使用自定义 pagination()的情况下,提出一种实现这里目的的方法。

时间: 原作者:

0 0

在使用分页组件时,聚合函数在order子句work不起作用。 我尝试在消息模型中声明一个虚拟字段,如下所示:


public $virtualFields = array(
'sortme' =>"ISNULL(Message.is_read)",
);

最后,在消息模型中将它声明为虚拟字段,这是。 感谢大家。

原作者:
...