簡體   English   中英

Codeigniter; 活動記錄類

[英]Codeigniter; Active Records Class

您好,我的問題是我只想獲取'last _...'的最后一個主題。 一個簡單的order_by不會起作用,因為它也會對論壇進行排序,這是我不想要的。 我到目前為止的代碼。 我是在CodeIgniter的內置Active Record中進行此操作的。

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` 

我認為您需要使用result_array()而不是result() 我可能是錯的,但這就是我會做的。

另外,我建議您執行的操作是使用PHPMyAdmin或使用的任何內容創建SQL請求,以便您可以實際看到請求獲得的結果,然后將其“轉換”為CodeIgniter語法。

您是否按照《用戶指南》中的方法嘗試過$ row = $ query-> last_row(): http ://codeigniter.com/user_guide/database/results.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM