Intereting Posts

Codeigniter; Класс активных записей

Привет, мои проблемы в том, что я хочу только получить последнюю тему для «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` 

Я думаю, вам нужно использовать result_array() вместо result() . Возможно, я ошибаюсь, но я бы так и сделал.

Кроме того, я бы рекомендовал вам создать SQL-запрос с PHPMyAdmin или любым другим, что вы используете, чтобы вы действительно могли видеть, что получилось с запросом, а затем «перевести» его в синтаксис CodeIgniter.

Вы пробовали $ row = $ query-> last_row (), как в Руководстве пользователя: http://codeigniter.com/user_guide/database/results.html