findメソッドでMySQLのDISTINCTを使いたいときはfieldsにDISTINCTでカラムを指定してやれば良い。
$params = array('fields' => 'DISTINCT user_id');
$this->Model->find('all', $params);
さて、ここでfind(‘all’)ではなくてfind(‘count’)の場合、上のようにパラメータを指定すると、
Object of class stdClass could not be converted to int
みたいなエラーが出ることがある。
何を言ってるのかはよく分からないけど、このエラーが出たときはfieldsを以下のように書き換えるとエラーが消える。
$params = array('fields' => 'COUNT(DISTINCT user_id) AS `count`');
$this->Model->find('count', $params);
ローカルではこんな風に書かなくてもエラーにならなかったのにサーバでテストしようと思ったら急にこんなエラーが出たんすけど…何でなんだろう。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。