0

我有一个包含 3 列(、、、thread_idmessage_id的MySQL 表message根据此链接中“使用 GROUP BY 的示例”下的解决方案,我希望我的查询为 GROUP BY thread_id,但为每个返回最高message_id(而不是默认最低)的行thread_id。然后我想要一个带有行/项目的格式良好的数组,就像你在 CakePHP 中沿着$array[index]['Model']['field']. 使用以下 CakePHP 语法:

$this->Model->find('all', array(
   'fields' => array('MAX(Model.message_id) as message_id', 'Model.thread_id', 'Model.message'),
   'group => 'Model.thread_id'
));

现在,不幸的是我没有得到格式良好的数组。相反,我得到一个看起来像这样的数组:

Array ( [0] => Array ( [0] => Array ( [message_id] => Want/correct_message_id ) [Model] => Array ( [message] => 来自最低/不需要的 message_id 行的消息。[thread_id] =>来自最低/不需要的 message_id 行的密钥))

为什么没有message_id钩到[Model]数组的一部分,为什么 CakePHP 会获取最低message_id行并将messageandthread_id放入[Model]没有列的数组部分message_id

我希望数组部分中的所有 thre 列,[Model]并且我希望根据我的初始描述,该行是最高message_id的。thread_id希望这个问题有意义。

4

1 回答 1

1

虚拟字段对于这种事情非常有用。

class MyModel extends AppModel {

    public $virtualFields = array(
        'max_message_id' => 'MAX(MyModel.message_id)'
    );

}

您现在可以像使用表中的普通字段一样使用 max_message_id,因此您可以将其添加到您的查找操作中。

于 2012-10-18T16:33:22.580 回答