前提・実現したいこと
cakePHPでのMySQLからのレコードの抽出についてです。
以下のようにテーブル構成をしています。
Postsテーブルで、ユーザーからのポストはmessageの内容によって種類をtypeで分類しています。
未分類のものはtypeを0にしており、ひとりのユーザーに対して、未分類のものがあればそのユーザーのそれ以前のポストは全て分類されているものとします。
そこで、未分類のポストを取得したいのですが、今までのポストでtypeを2に分類された数が多いユーザー順に取得したいです。
またpaginationも使いたいです。
どのようにpaginationに設定すればよろしいでしょうか。グループ化や、count関数を使って考えてみましたが、うまくいきませんでした。
解決方法があれば教えていただきたいです。
テーブル
Posts Table: ------------------------------------------------------------------------ | id | user_id | message | type | ------------------------------------------------------------------------ | 1 | 1 | message1 | 2 | ------------------------------------------------------------------------ | 2 | 2 | message2 | 2 | ------------------------------------------------------------------------ | 3 | 3 | message3 | 2 | ------------------------------------------------------------------------ | 4 | 1 | message4 | 1 | ------------------------------------------------------------------------ | 5 | 3 | message5 | 2 | ------------------------------------------------------------------------ | 6 | 2 | message6 | 1 | ------------------------------------------------------------------------ | 7 | 2 | message7 | 2 | ------------------------------------------------------------------------ | 8 | 3 | message8 | 2 | ------------------------------------------------------------------------ | 9 | 1 | message9 | 1 | ------------------------------------------------------------------------ | 10 | 1 | message10| 0 | ------------------------------------------------------------------------ | 11 | 2 | message11| 0 | ------------------------------------------------------------------------ | 12 | 4 | message12| 0 | ------------------------------------------------------------------------
期待している抽出結果
------------------------------------------------------------------------ | 11 | 2 | message11| 0 | ------------------------------------------------------------------------ | 10 | 1 | message10| 0 | ------------------------------------------------------------------------ | 12 | 4 | message12| 0 | ------------------------------------------------------------------------
現状
現状以下のようになっています。
$this->Post->find('all',array( 'fields' => array( ' (select count(*) from posts where user_id=t1.user_id and type=2) as cnt , t1.*' ), 'conditions' => array( 'type' => 0 ) 'order' => array( '1 desc' ) ))
以下のSQL文が発行されます
select (select count(*) from posts where user_id=t1.user_id and type=2) as cnt , t1.* from posts where type=0 order by 1 desc
当然、from posts t1とはなりません。
何か解決方法はあるでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/11 03:48
2019/02/11 03:57
2019/02/11 03:59
2019/02/11 05:12
2019/02/11 05:15
2019/02/11 05:34