RedBean ORM и Codeigniter, как заставить Fuse распознавать модели, загруженные из пути моделей CI по умолчанию? - PullRequest
16 голосов
/ 23 июня 2011

Codeigniter имеет свой собственный путь Моделей, где модели берут начало от CI_Model. Я использую RedBean имеет библиотеку в Codeigniter, загружая ее на контроллер. После загрузки Rb я пытаюсь использовать CI Loader для загрузки модели, которая расширяет redbean_simplemodel (желание работает, ошибки нет), но события / методы внутри модели не действуют при вызове bean-компонента.

Например, AppPath / приложения / библиотеки / rb.php

class Rb {

    function __construct()
    {
        // Include database configuration
        include(APPPATH.'/config/database.php');

        // Get Redbean
        include(APPPATH.'/third_party/rb/rb.php');

        // Database data
        $host = $db[$active_group]['hostname'];
        $user = $db[$active_group]['username'];
        $pass = $db[$active_group]['password'];
        $db   = $db[$active_group]['database'];

        // Setup DB connection
        R::setup("mysql:host=$host;dbname=$db", $user, $pass);

    } //end __contruct()


} //end Rb

А потом на AppPath / приложение / модели / model_song.php

class Model_song extends RedBean_SimpleModel {

 public function store() {
  if ( $this->title != 'test' ) {
  throw new Exception("Illegal title, not equal «test»!");
  }
 }

}

в то время как на AppPath / приложение / контроллеры / welcome.php

class Welcome extends CI_Controller {

    public function index()
    {
        $this->load->library('rb');
        $this->load->model('model_song');

        $song = R::dispense('song');
        $song->title  = 'bluuuh';
        $song->track = 4;
        $id = R::store($song);
        echo $id;

    }
}

У меня вопрос, как заставить RedBean (FUSE http://redbeanphp.com/#/Fuse) работать на Codeigniter?

Спасибо за внимание!

----- НАЙДЕНО РЕШЕНИЕ!

На самом деле, это работает! Я пытался поместить код под мою модель, метод store (). Это не сработает! Я попытался разместить новый метод с именем update (), и он работает! Проверьте пример ниже:

class Model_song extends RedBean_SimpleModel {

 public function update() {
  if ( $this->title != 'test' ) {
    throw new Exception("Illegal title!");
  }
 }

}

Решение следующее:

"Предполагая, что вы уже установили RedBean на Codeigniter"

1) Загрузить библиотеку для «redbean» 2) Используя ci_loader, загрузите желаемую модель (модель должна расширять redbean_simplemodel)

Спасибо за внимание! Надеюсь, это поможет и другим людям.

1 Ответ

3 голосов
/ 14 января 2012

Решение заключается в следующем:

«Предполагая, что вы уже установили RedBean на Codeigniter»

  1. Загрузить библиотеку для «redbean»
  2. Использованиеci_loader, загрузите нужную модель (модель должна расширять redbean_simplemodel)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...