2011-06-23 25 views
16

Codeigniter có đường dẫn Mô hình riêng, nơi các mô hình mở rộng từ CI_Model. Tôi đang sử dụng RedBean có một thư viện trong Codeigniter, tải nó trên một bộ điều khiển. Sau khi tải Rb, tôi cố gắng sử dụng CI Loader để tải một mô hình mở rộng redbean_simplemodel (các công việc mong muốn, không có lỗi), nhưng các sự kiện/phương thức bên trong mô hình không có tác dụng khi chúng được gọi trên bean.RedBean ORM và Codeigniter, làm thế nào để làm cho Fuse nhận ra các mô hình được tải từ đường dẫn mô hình mặc định CI?

Ví dụ, APPPATH/application/thư viện/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 

Và sau đó trên APPPATH/application/mô hình/model_song.php

class Model_song extends RedBean_SimpleModel { 

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

} 

trong khi trên APPPATH/ứng dụng /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; 

    } 
} 

Câu hỏi của tôi là, làm thế nào để làm cho RedBean (FUSE http://redbeanphp.com/#/Fuse) hoạt động trên Codeigniter?

Cảm ơn bạn đã tìm kiếm!

----- GIẢI PHÁP TÌM THẤY!

Thực ra, nó hoạt động! Tôi đã cố gắng để đặt mã theo mô hình của tôi, phương pháp lưu trữ(). Điều đó sẽ không hoạt động! Tôi đã thử đặt một phương thức mới có tên là update() và nó hoạt động! Kiểm tra ví dụ dưới đây:

class Model_song extends RedBean_SimpleModel { 

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

} 

Giải pháp này như sau:

"Giả sử bạn đã cài đặt RedBean trên CodeIgniter"

1) Tải thư viện cho «redbean» 2) Sử dụng ci_loader, tải mô hình mong muốn (mô hình phải mở rộng redbean_simplemodel)

Cảm ơn bạn đã tìm kiếm! Tôi hy vọng điều này sẽ giúp những người khác nữa.

Trả lời

3

Giải pháp là như sau:

"Giả sử bạn đã cài đặt RedBean trên CodeIgniter"

  1. tải thư viện cho «redbean»
  2. Sử dụng ci_loader, tải các mô hình mong muốn (mô hình phải mở rộng redbean_simplemodel)
Các vấn đề liên quan