В некоторых отношениях я вижу выгоду от использования классов Active Record, но в других случаях это может быть недостатком.Позвольте мне уточнить.
Как сказал Бирдерик, преимущество использования класса Active Record состоит в том, что CodeIgniter в основном записывает для вас операторы t-SQL в ядре базы данных, которое вы указали в файле config.php.Возьмем, к примеру, следующий код:
$this->db->select('*')->from('users')->where('name', 'bob');
$query = $this->db->get(0,10);
Сгенерирует это в MySQL: SELECT * FROM Users WHERE Name = 'bob' LIMIT 0, 10
.
И это в PostgreSQL: SELECT * FROM Users WHERE Name = 'bob' LIMIT 0 OFFSET 10
Небольшие различия во tSQL заботится класс Active Record и его конструктор запросов.Это огромное преимущество, когда вы переносите базу данных или тестируете код модели на новом источнике данных (например, для модульного тестирования с базой данных SQLite).
Однако, с другой стороны,Монета Я думаю, что , как правило, базы данных, как правило, сложнее изменить и имеют гораздо больше "ловушек" при миграции.Если вы напишите весь свой код как код Active Record, то он фактически навсегда привязан к CodeIgniter.Затем довольно трудно перенести этот код и эти запросы в новую инфраструктуру MVC или даже на новый язык.
Использование класса Active Record дает вам свободу базы данных, но связывает вас с CodeIgniter.Использование обычных SQL-запросов дает вам свободу среды, но привязывает вас к вашей базе данных.Иногда мои запросы довольно сложны и имеют подзапросы, всевозможные объединения, странный специфический синтаксис SQL Server ... поэтому я должен использовать $ this-> db-> query ().Однако для всего простого я использую Active Record.