Php 共点火器;活动记录类
您好,我的问题是,我只想获取“最后一个…”的最后一个主题。一个简单的订单将不起作用,因为它会排序论坛以及,这是我不想要的。到目前为止我掌握的代码。我在CodeIgniter的内置活动记录中这样做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
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
ONtopics
f\u id
forumsid
左键加入id
回复ON回复t\u id
id
左键加入用户左键加入用户id
主题排名
在用户上
状态
=排名
id
按论坛分组
id