$result=$this->Tag->ThemesTag->find('list',array( 'fields'=>array( 'count(*) AS count', 'Tag.content' ), 'conditions'=>array( 'Tag.content like'=>"%".$this->data['Tag']['content']."%", 'Theme.status'=>1 ), 'limit'=>10, 'group'=>'ThemesTag.tag_id', 'order'=>'count desc,ThemesTag.id asc', 'recursive'=>2 ));こんな感じでlistを指定して、count(*)を使用すると、以下のようなSQLが発行されてしまう。
テーブル名.count(*)ってひどいな。。。
SELECT ThemesTag.count(*) AS count, `Tag`.`content` FROM `themes_tags` AS `ThemesTag` LEFT JOIN `themes` AS `Theme` ON (`ThemesTag`.`theme_id` = `Theme`.`id`) LEFT JOIN `tags` AS `Tag` ON (`ThemesTag`.`tag_id` = `Tag`.`id`) WHERE `Tag`.`content` like '%a%' AND `Theme`.`status` = 1 GROUP BY `ThemesTag`.`tag_id` ORDER BY `count` desc, `ThemesTag`.`id` asc LIMIT 10なので、仕方がないので、allを使用し、後でリストっぽく整形することで対処した。
※CakePHPのバージョンはcakephp-cakephp-1.3.15-9-gacd25c3.zip
0 件のコメント:
コメントを投稿