Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RedBean ORM and Codeigniter, how to make Fuse recognize models loaded from CI default models path?

Codeigniter has its own Models path, where models extend from CI_Model. I'm using RedBean has a library in Codeigniter, loading it on a controller. After loading Rb, I try to use CI Loader to load a model that extends redbean_simplemodel (wish works, there's no error), but the events / methods inside the model have no effect when they're called on bean.

For example, APPPATH/application/libraries/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

And then on APPPATH/application/models/model_song.php

class Model_song extends RedBean_SimpleModel {

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

}

while on APPPATH/application/controllers/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;

    }
}

My question is, how to make RedBean (FUSE http://redbeanphp.com/#/Fuse) work on Codeigniter ?

Thanks for looking!

----- FOUND SOLUTION!

Actually, it's working! I was trying to place code under my model, method store(). That wont work! I tryed to place a new method called update() and it does work! Check the example below:

class Model_song extends RedBean_SimpleModel {

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

}

The solution is the following:

"Assuming that you've already installed RedBean on Codeigniter"

1) Load the library for «redbean» 2) Using ci_loader, load the desired model (the model must extend redbean_simplemodel)

Thanks for looking! I hope this helps other people too.

like image 820
punkbit Avatar asked Jun 23 '11 16:06

punkbit


1 Answers

The solution is the following:

"Assuming that you've already installed RedBean on Codeigniter"

  1. Load the library for «redbean»
  2. Using ci_loader, load the desired model (the model must extend redbean_simplemodel)
like image 105
punkbit Avatar answered Sep 30 '22 12:09

punkbit