Я разрабатываю CMS и внедряю управление версиями, добавляя новую запись в базу данных с текущей отметкой времени.
Моя таблица настроена следующим образом:
id | page | section | timestamp | content
«Страница» - это страница, к которой осуществляется доступ, это либо путь к странице ($ page_name ниже), либо «/» (для обозначения глобальных полей).
«Раздел» - это раздел редактируемой страницы.
Я хочу иметь возможность выбрать все строки для данной страницы, но каждый раздел должен быть выбран только один раз, тот, где выбрана последняя отметка времени.
Я пытался использовать следующий код активной записи CodeIgniter:
$this->db->select('DISTINCT(section), content');
$this->db->where_in('page', array('/', $page_name));
$this->db->order_by('timestamp', 'desc');
$query = $this->db->get('cms_content');
Который производит следующий SQL:
SELECT DISTINCT(section), `content`
FROM (`cms_content`)
WHERE `page` IN ('/', 'index.html')
AND `enabled` = 1
ORDER BY `timestamp` desc
Возвращает обе тестовые строки (строки имеют все одинаковые поля, кроме id, timestamp и content).
Есть идеи, где я иду не так?
Спасибо!