1

特定のユーザーの投票の合計を取得しようとしています。

これが投稿テーブルだとします

id | body  | user_id | vote_total | type
1    test     1          4          new
2    test2    1          3          new
3    test3    2          2          new

次の出力を取得しようとしています

user_id  | vote_total
 1          7
 2          2

これが PostsController の私の関数です

 public function topvotes(){ 
    $virtualFields = array('total' => 'SUM(Post.vote_total)');
    $total = $this->Post->find('all', array(
                            array('fields' => array('total'), 
                            'recursive' => 1,
                            'group' => array('Post.user_id'),
                            'conditions'=>array('Post.type' => 'new' ))));

    $post = $this->Post->find('all', $total);
    $this->set('posts', $post);
}

このクエリは機能します (phpmyadmin で試しました) が、結果の配列にアクセスする方法がわかりません

編集次のクエリを使用して動作するようにしました

$query = $this->Post->query("select posts.user_id, SUM(Posts.vote_total) from posts where posts.type = 'new' group by posts.user_id");
    $this->set('posts', $query);

print_r と入力すると、これは配列です

Array ( [posts] => Array ( [user_id] => 7 ) [0] => Array ( [total] => 6 ) ) 1
4

2 に答える 2

-1

次の方法で同じことを行うことができます。

$this->Post->virtualFields['TotalVotes'] = 0;
$query = $this->Post->query("select posts.user_id, SUM(Posts.vote_total) as TotalVotes from posts where posts.type = 'new' group by posts.user_id");
$this->set('posts', $query);

このドキュメントページは、あなたが必要とされたのと同じことを達成するのに確かに役立ちます。それがうまくいかなかったかどうか尋ねてください。

于 2012-08-08T03:44:14.100 に答える