Codeigniter не позволит мне назвать модель из модели, это правда

Так что я часами пытался заставить это работать, но не смог!

У меня есть базовая модель, которая загружает другие модели. Эти другие модели во время своей функции построения ссылаются на некоторые переменные из базовой модели. Например:

Модель пользователя:

Проверьте, вошел ли пользователь в систему, и если да, то он загрузит его модель отношений.

Модель отношений:

Пытается загрузить отношение этого пользователя во время построения. Так я попробовал $this->user->idнапример, но выдает ошибку " Undefined property "!

Я попытался преобразовать свою базовую модель в библиотеку и попробовал еще раз, но она не работает!

Теперь это разочаровывает и странно! Для этого есть причина? Можем ли мы это исправить?

Я разработал весь рабочий процесс на основе этой модели, чтобы вызывать другие модели и передавать данные из третьей модели и т. Д.

Мне нравится держать мои контроллеры настолько тонкими, насколько это возможно. Это противоречит принципам КИ?

3 ответа

Попробуйте следующий код в вашей модели для доступа user модель

$CI =& get_instance();
$CI->load->model('user');
// Call new model functions using handle to main CI object
echo $CI->user->id

Начиная с CodeIgniter v2.XX,это возможно и полностью поддерживается для вызова другой модели из вашей текущей модели.

Во-первых, убедитесь, что у вас установлена последняя версия CodeIgniter (или, по крайней мере, v2.01 и выше).
Затем все, что вам нужно сделать, это расширить классы CodeIgniter следующим образом:

$CI =& get_instance();  (Instead of $CI you can choose any other variable)

Теперь загрузите вашу модель, как вы все время, но на этот раз, вместо того, чтобы использовать сохраненное слово $this это работает только внутри ваших контроллеров, вы будете использовать новую расширенную переменную $CI:

$CI->load->model('user');

Теперь вы можете вызывать любую функцию внутри вашего user модель и, конечно, просматривать ваши id:

echo $CI->user->id;

Вы также можете взглянуть на этот пост для получения дополнительной информации.

Удачи!

Модели /user_model.php

class User_model extends CI_Model {

    public $id;

    public function __construct() {
        parent::__construct();
    }
}

модели /base_model.php

class Base_model extends CI_Model {

    public function __construct() {
        parent::__construct();

        $this->load->model('user_model');
        //load other models..

        //$this->user is available in your base model
        var_dump( $this->user_model->id );
    }
}

Контроллеры /welcome.php

class Welcome extends CI_Controller {

    public function index() {

        $this->load->model('base_model');

        //$this->user is available in your controller if you load base model
        var_dump( $this->user_model->id );
    }
}

О вашем последнем вопросе посмотрите эту толстую модель или толстый контроллер?

Другие вопросы по тегам