【问题标题】:Loading and using a codeigniter model from another model从另一个模型加载和使用 codeigniter 模型
【发布时间】:2011-06-05 11:35:51
【问题描述】:

各位程序员,我可以使用 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

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

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

提前致谢。

【问题讨论】:

  • 当一个模型引用另一个模型时(例如,在 RDBM 中使用外键),您通常希望这样做。在这种情况下,原始模型将具有引用链接模型的decision_model 属性。如果您没有这样的模型,则模型不会链接,并且在您的第一个模型中使用 $this->load 不会将加载的模型链接到任何有用的东西。
  • 已经在这里回答:stackoverflow.com/questions/872623/…
  • 您可能希望查看基于 CI 但允许这样的事情的 Kohana 框架。
  • 我已经阅读了那个帖子,它给出了两个相互矛盾的答案:Phil 说我想使用的代码可以在 CI 中使用,而其他代码则提供了解决方法。那么,哪一个是正确答案,为什么我的代码失败了?谢谢
  • @Guss,这两个模型应该是链接的——这就是我试图访问第二个模型的原因。如果我在原始模型中有引用(我假设您指的是类属性),我将如何初始化它以引用决策模型?谢谢

标签: codeigniter model


【解决方案1】:

你可以这样做:

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

【讨论】:

  • 做到了!非常感谢 :) 我正在做类似的事情,但将代码移动到帮助程序中。它变得非常丑陋。再次感谢。
  • 在 CI 2.0 中,您可以直接从另一个模型调用一个模型。
  • @phirschybar +1 如果不是您的评论(CI 2.1),我会使用get_instance .. :)
【解决方案2】:

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

【讨论】:

  • 您在哪里找到这些信息的?在 CI 3 和 4 上也是如此,但在阅读您的评论之前我不知道它并且找不到任何关于它的信息!
【解决方案3】:

您还可以添加一个private $_ci; 类变量,并在您的构造函数中对其进行初始化。

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

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

然后它将可用于您正在使用的任何功能,无需到处get_instance()

【讨论】:

    【解决方案4】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 2017-10-05
      相关资源
      最近更新 更多