if ($slug === FALSE){
$this->db->order_by('posts.id', 'DESC');
$this->db->join('categories', 'categories.id = posts.category_id');
$query = $this->db->get('posts');
return $query->result_array();
}
У меня есть три сообщения в моей таблице, но в результате я получаю только 1. Это проблема, с которой я столкнулся после объединения двух таблиц (категорий и сообщений).
Код SQL, который выполняется:
SELECT *
FROM `posts`
JOIN `categories` ON `categories`.`id` = `post`.`category_id`
ORDER BY `posts`.`id` DESC






Возможно, в ваших сообщениях не определены категории. Поле внешнего ключа должно быть установлено, если вы хотите выполнить внутреннее соединение. Вы получаете только сообщения, которые имеют категории здесь. В противном случае вы можете получать сообщения без категорий, используя левое соединение.
Внешние ключи не нужны для соединений любого типа. Я предполагаю, что вы имеете в виду, что поля, используемые для объединения (в данном случае categories.id=posts.category_id), должны существовать в обеих таблицах.
Трудно сказать что-либо, кроме обоснованного предположения, не видя фактического образца данных из ваших таблиц. Если бы мне пришлось угадывать, либо сообщения ссылаются на несуществующую категорию, либо категории вообще не упоминаются в сообщениях. Внутренние соединения выводят только то, что соответствует каждому указанному вами предложению. Попробуйте использовать левое соединение и посмотрите, что изменится. Вы сможете понять, что не так оттуда