Loading and using a codeigniter model from another

2020-08-12 04:22发布

问题:

Fellow coders, using codeigniter 1.7.3 can I load a model from the code of another model? I have read many posts theoretical and practical but none gave a final answer.

I have a model that has a function in which i would like to perform an operation on another model. the code is like this:

1: $this->load->model('decision_model');
2: $this->decision_model->hello_decision();  

line 1 works. line 2 fails as follows:

A PHP Error was encountered
Severity: Notice
Message: Undefined property: Account_model::$decision_model
Filename: models/account_model.php

I have tried creating simple dumb models, changed function names, giving the model an alias when loading it, etc... no luck

So, theory aside, is this doable?

thanks in advance.

回答1:

You can do it like this:

class User_model extends Model
{
    function get_something()
    {
         $CI =& get_instance();
         $CI->load->model('profile_model');
         return $CI->profile_model->get_another_thing();
    }
}


回答2:

In CI 2.0 you can just call one model directly from another.



回答3:

You can also add a private $_ci; class variable, and initialize it in your constructor.

public function __construct($input=null)
{
    $this->_ci =& get_instance();

    if ( $input != null && is_array($input) ) {
         $this->populate($input);
    }
}

Then it'll be available to any function you're working with, no need to get_instance() all over the place.



回答4:

Try this:

$this->load->model('decision_model');
$CI =& get_instance();
$CI->decision_model->hello_decision();