0

こんにちは私の問題は、「last_...」の最後のトピックのみを取得したいということです。単純な order_by は、フォーラムもソートするため、機能しません。これは望ましくありません。私がこれまでに持っているコード。これは、CodeIgniter の組み込みの Active Records で行っています。

return $this->db->select('forums.*,')
        ->select('Count(topics.id) threads, Count(replies.id) replies')
        ->select('topics.url last_post_url, topics.name last_post_name, topics.created last_post_date')
        ->select('users.url user_url, users.name user_name, ranks.name user_rank')
        ->from('forums')
        ->join('topics', 'topics.f_id = forums.id', 'left')
        ->join('replies', 'replies.t_id = topics.id', 'left')
        ->join('users', 'users.id = topics.a_id', 'left')
        ->join('ranks', 'users.status = ranks.id','left')
        ->group_by('forums.id')
        ->get()
        ->result();

私が何をしようとしているのかわからない場合; フォーラムを取得したいのですが、すべての行に、数またはトピック (作業中)、返信数 (作業中)、および最後の投稿の作成者を追加したいと考えています。

生のクエリ

SELECT `forums`.*, Count(topics.id) threads, Count(replies.id) replies, `users`.`url` user_url, `users`.`name` user_name, `ranks`.`name` user_rank
FROM (`forums`)
LEFT JOIN `topics` ON `topics`.`f_id` = `forums`.`id`
LEFT JOIN `replies` ON `replies`.`t_id` = `topics`.`id`
LEFT JOIN `users` ON `users`.`id` = `topics`.`a_id`
LEFT JOIN `ranks` ON `users`.`status` = `ranks`.`id`
GROUP BY `forums`.`id` 
4

2 に答える 2

0

result_array()の代わりに使用する必要があると思いますresult()。私は間違っているかもしれませんが、それが私のやり方です。

また、PHPMyAdmin などを使用して SQL リクエストを作成することをお勧めします。これにより、リクエストで何が得られるかを実際に確認してから、それを CodeIgniter 構文に「変換」します。

于 2012-07-24T12:37:39.710 に答える
0

ユーザーガイドのように $row = $query->last_row() を試しましたか: http://codeigniter.com/user_guide/database/results.html

于 2012-07-25T04:22:35.193 に答える