Я не изучал код достаточно усердно, но какое-то время пользуюсь codeigniter, надеюсь, что-то не так, но, как вы уже догадались, что-то не работает. Требуемый $ db находится не в суперклассе CI_Model (и не в суперклассе CI_Controller), а в переменной, объявленной в классе Loader (system / core / loader.php).
Приложение codeigniter разработано так, как если бы оно было гигантским «суперклассом», на самом деле все библиотеки, модели и т. Д. Создаются с использованием $ this (которое обычно используется в области видимости класса), поэтому, когда вы загружаете библиотеку db - и вы можете делать это в своих моделях, а также в своих контроллерах (и, если вы создаете экземпляр основного класса $ CI в пользовательской библиотеке, также там), вы фактически ссылаетесь на переменную create в классе загрузчика, точно в строке 229 (более или менее) внутри метода базы данных класса CI_Loader.
Я не настолько глубоко разбираюсь в знаниях CI, чтобы дать вам более подробную информацию, но если вы посмотрите на codeigniter.php и loader.php, вы сможете получить достаточно глубокое понимание, чтобы понять, как CI работает внутри.
Если у вас есть другой вопрос или что-то еще не ясно, просто спросите;)