Я пытаюсь построить запрос, который работает:
select
year(created_timestamp) as year,
month(created_timestamp)as month,
MONTHNAME(created_timestamp) month_name,
count(*) total_published
From posts
GROUP BY year, MONTH(created_timestamp), MONTHNAME(created_timestamp)
ORDER BY year DESC, month DESC';
Теперь я пытаюсь построить вышеуказанный запрос, используя активную запись следующим образом:
$this->db->simple_query('year(created_timestamp) as year,
month(created_timestamp) as month, monthname(created_timestamp) as monthname,
COUNT(*) post_count');
$this->db->group_by('year');
$this->db->group_by('monthname');
$this->db->group_by('month');
$this->db->order_by('year', 'desc');
$this->db->order_by('month', 'desc');
$this->db->from('posts');
$query = $this->db->get();
Ниже приведена ошибка, которую я получаю. Очевидно, он не знает псевдонимов. Как я могу заставить CI распознавать псевдонимы?
Unknown column 'year' in 'order clause'
SELECT * FROM `posts` GROUP BY `year`, `monthname`, `month` ORDER BY
`year` DESC, `month` DESC
Некоторая отладочная работа привела к решению:
После большой отладки это решение:
function blog_archive(){
$this->db->select('year(created_timestamp) as year, month(created_timestamp) as month, monthname(created_timestamp) as monthname, COUNT(*) post_count');
$this->db->from('posts');
$this->db->group_by('year');
$this->db->group_by('monthname');
$this->db->group_by('month');
$this->db->order_by('year', 'desc');
$this->db->order_by('month', 'desc');
$blog_archive = $this->db->get()->result_array();;
return $blog_archive;
}