$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 件のコメント:
コメントを投稿