cakephp find(' all')获取最后匹配的记录

时间:2015-02-09 06:02:18

标签: mysql cakephp-2.0

enter image description here

大家好 我想要执行$ this-> Model-> find(' all');在广播表上,我只需要获取每个模型的最后一个广播ID,如模型12的4和模型13的6,我通过使用如下的简单mysql查询完成此操作。

SELECT * FROM broadcasts WHERE id IN(SELECT MAX(id)FROM broadcasts GROUP BY model_id);

但我想知道如何在cakephp中实现它。

请提供宝贵的意见。

3 个答案:

答案 0 :(得分:6)

  

Mysql查询     你应该使用mysql查询获取记录     查询是

SELECT max(id),model_id FROM `model` group by model_id

输出

enter image description here

Cakephp查找查询

<?php
  $data=$this->Brodcast->find('all',
    'fields' => array('MAX(id) AS maxid', 'model_id'), 
    'group'=>'model_id'
    );
  ?>

答案 1 :(得分:0)

您好您应该尝试将您的查询重写为: -

$options['fields'] = array( 'MAX(id) AS maxid', 'model_id' );
$options['group'] = array( 'model_id' );
$this->ModelName->find( 'all', $options );

答案 2 :(得分:0)

使用它可以正常工作: -

<?php
      $data=$this->Brodcast->find('all',
        'fields' => array('MAX(id) AS maxid', 'model_id'), 
        'group'=>'model_id'
        );
      ?>