У меня есть четыре таблицы:
pages: id, all_content, all_posts [...]
content: id, type [...]
posts: id, content_id [...]
pages_content: id, page_id, content_id, hidden
Учитывая определенный идентификатор страницы, я хочу получить все строки контента / сообщений, если pages.all_content
или pages.all_posts
установлены на 1
.
Кроме того, я хочу получить все pages_content.hidden
столбцы, в которых page_id == pages.id
и строки содержимого / записей, связанные с ними, независимо от all_content / all_posts.
Я бы хотел использовать для этого функции базы данных CI.
Теперь это мой код; он возвращает только контент, представленный в таблице pages_content
, но в остальном он дает ожидаемый результат, когда речь идет о значениях all_content / all_posts.
$this->db->select('all_content, all_posts');
$query = $this->db->get_where('pages', [ 'id' => $id ]);
if ($query->num_rows())
{
$auto = $query->row();
$query->free_result();
$this->db->join('posts', 'posts.content_id = content.id');
$this->db->join('pages_content', 'content.id = pages_content.content_id');
$this->db->order_by('publish_date', 'DESC');
$this->db->select('content.id, uri, hidden, type, title, publish_date');
$this->db->where('pages_content.page_id', $id);
$this->db->or_where('type = "posts" AND ('.$auto->all_content.' OR '.$auto->all_posts.')');
$query = $this->db->get('content');
$result = $query->result();
$query->free_result();
return $result;
}
$query->free_result();
return FALSE;