Php 共点火器;活动记录类

Php 共点火器;活动记录类,php,mysql,codeigniter,join,sql-order-by,Php,Mysql,Codeigniter,Join,Sql Order By,您好,我的问题是,我只想获取“最后一个…”的最后一个主题。一个简单的订单将不起作用,因为它会排序论坛以及,这是我不想要的。到目前为止我掌握的代码。我在CodeIgniter的内置活动记录中这样做 return $this->db->select('forums.*,') ->select('Count(topics.id) threads, Count(replies.id) replies') ->select('topics.url l

您好,我的问题是,我只想获取“最后一个…”的最后一个主题。一个简单的订单将不起作用,因为它会排序论坛以及,这是我不想要的。到目前为止我掌握的代码。我在CodeIgniter的内置活动记录中这样做

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\u array()
而不是
result()
。我可能错了,但我会这么做


另外,我建议您使用PHPMyAdmin或您使用的任何工具创建SQL请求,这样您就可以实际看到请求得到了什么,然后将其“翻译”为CodeIgniter语法。

您是否尝试过用户指南中的$row=$query->last_row():

是否可以提供表结构,我试图将sql导出到它中,但我只得到了一个又一个错误,几乎没有错误处理。如果你能让它工作的话,你有一个它的粘贴。我的两个问题是last_post_url、last_post_name和last_post_date必须是最新的主题或回复(可靠的是哪个更晚)。我已尝试重新创建您的架构,并向其中添加一些测试数据,并编辑问题。另外,我认为您正在考虑“”问题。complex857,您遇到了与我相同的问题,它涉及第一个主题,而不是最后一个主题。在您的例子中,它获取创建为“2012-07-24 14:54:21”的“topic1”,而创建为“2012-07-28 00:00:00”的topic3。它还应该检查回复以及主题。Topic1在14:30:30创建,Topic2在13:45:45创建,Reply1在13:50:50创建,然后它应该获取Reply1。提前谢谢。同样感谢这个子查询,我将尝试一下,不确定codeigniter是否支持它,但我必须用“老式”的方式来做!是的,这不是一个解决方案,它是在一个更加实验友好的环境中复制代码,添加到您的问题中,这样其他人可能会更好地理解它。但是,由于我无法验证是否正确地重新创建了您的内容,因此我没有将其作为edit提交。result_array()应该更好。是的,但它不会改变或解决我的问题。选择
论坛
*,计数(topics.id)线程,计数(reples.id)回复,
用户
url
user\u url,
用户
名称用户名,
排名
名称用户排名来源(
论坛
)左键加入
topics
ON
topics
f\u id
forums
id
左键加入
id
回复
ON
回复
t\u id
id
左键加入
用户
左键加入
用户
id
主题
排名
用户上
状态
=
排名
id
论坛分组
id