从另一个模型加载并使用 codeigniter 模型

问题描述 投票:0回答:5

各位程序员,使用codeigniter 1.7.3可以从另一个模型的代码中加载一个模型吗?我读过很多理论和实践的文章,但没有一个给出最终答案。

我有一个模型,它有一个函数,我想在另一个模型上执行操作。代码是这样的:

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

1号线有效。第 2 行失败如下:

遇到 PHP 错误
严重性:通知
消息:未定义的属性:Account_model::$decision_model
文件名:models/account_model.php

我尝试过创建简单的哑模型、更改函数名称、在加载模型时给模型起一个别名等等...没有运气

那么,抛开理论不谈,这可行吗?

提前致谢。

php codeigniter model-view-controller model
5个回答
20
投票

你可以这样做:

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

10
投票

在 CI 2.0 中,您可以直接从一个模型调用另一个模型。


1
投票

试试这个:

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

1
投票

您还可以添加一个

private $_ci;
类变量,并在构造函数中初始化它。

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

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

然后您正在使用的任何功能都可以使用它,无需到处

get_instance()


0
投票

我会创建一个CodeIgniter库,并让该库进行模型操作,然后返回到当前模型。我认为这种方法更干净。

© www.soinside.com 2019 - 2024. All rights reserved.