

こんにちは、cake初心者です。クエリの設定で詰まってしまいましたので質問させていただきます。

実現したいことは、以下になります。

### **その月の最新の日付のものを表示させる。**

以下のようにカスタムクエリを書いています。

[code]

    $this->paginate = [
            'limit' => 20,
            'order' => array('date' => 'desc'),
            'group' => ['date' => 'month(date)']
        ];
    
    $datasList = $this->paginate($this->model);
    
[/code]

結果は以下のようになります。

日付  
2016年11月02日(一番日付が小さいもの)  
2016年10月01日(一番日付が小さいもの)  
2016年09月21日(一番日付が小さいもの)

### 実現したいこと

日付  
2016年11月05日(日付が最新)  
2016年10月05日(日付が最新)  
2016年09月30日(日付が最新)

### 聞きたいこと

・paginateの設定だけで、うまく日付が最新のものを表示できないかどうか。  
・他にもっと良いやり方があるか。

よろしくお願いします。


CC BY-SA 3.0
2016-09-21T19:59:45.653
29038
2017-03-17T03:50:45.523
2020-06-17T08:14:45.997
-1
18612
question
php mysql cakephp
cakeでクエリのセットアップに詰まっています。（その月の最新の日にちのものを表示させたい）


解決方法は以下です。  
**クエリビルダで実装する。**  
max(date)を設定するために、一旦queryを取得して、selectを設定する。

[code]

    $query = $this->Table->find();//クエリ取得
    $query->select([
    'date' => $query->func()->max('date')//max(date)の指定
    ]);
    $this->paginate = [
            'limit' => 20,
            'order' => array('date' => 'desc'),
            'group' => ['date' => 'month(date)']
    ];
    $datasList = $this->paginate($query);
    
[/code]

参考  
<https://teratail.com/questions/48872>

<http://book.cakephp.org/3.0/ja/orm/query-builder.html#sql>

こちら自己解決はできませんでした。


CC BY-SA 3.0
2016-09-21T22:16:33.833
29039
2016-09-21T22:16:33.833
18612
29038
answer