Расширение класса CI_DB_active_record в codeigniter 2.0 - PullRequest
3 голосов
/ 23 февраля 2011

Я пишу свою первую программу с Codeigniter и столкнулся с проблемой. Я начну с целенаправленного описания проблемы и могу расширить ее, если мне нужно:

Мне нужно записать многомерный массив в базу данных и использовать для этого функцию insert_batch из класса CI_DB_active_record. Проблема в том, что мне нужно записать пустые значения как NULL для некоторых полей, в то время как другие поля должны быть пустыми строками. Текущая функция заключает все значения в одинарные кавычки, и я не могу найти способ записать нулевые значения в базу данных для указанных полей.

Я также хотел бы увеличить количество записей в пакете.

Я вижу, как расширять модели, библиотеки и т. Д., Но есть ли способ расширить класс CI_DB_active_record без изменения базовых классов? Минимальное количество изменений базового класса для выполнения этой работы, которое я обнаружил, - это изменение следующих строк в файле DB.php (изменение файла require_once на новый файл, расширяющий класс CI_DB_active_record и изменение имени класса CI_DB_active_record на новый класс имя):

require_once(BASEPATH.'database/DB_active_rec'.EXT);

        if ( ! class_exists('CI_DB'))
        {
            eval('class CI_DB extends CI_DB_active_record { }');
        }

Могу ли я сделать лучше?

1 Ответ

2 голосов
/ 06 марта 2011

Для этого не существует готового решения. Ваш взлом - разумное решение, и если он справится со своей задачей, то сразу.

Если у вас есть какие-либо изменения в ядре (достаточно возможностей для улучшения в некоторых частях AR), то почему бы не запрыгнуть на BitBucket и помочь с Reactor?

https://bitbucket.org/ellislab/codeigniter-reactor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...