首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义模型代码点火器2中选择失败

自定义模型代码点火器2中选择失败
EN

Stack Overflow用户
提问于 2014-03-12 15:33:36
回答 1查看 92关注 0票数 0

在我的自定义模型中,数据库选择函数有问题。这是密码

代码语言:javascript
复制
class MY_Model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->helper('inflector');
    }

    public function fetch($parameters = array(), $raw = FALSE)
    {
        $tablename = $this->getTableName();

        $this->select_fields(FALSE == empty($parameters['fields']) ? $parameters['fields'] : FALSE);
        unset($parameters['fields']);

        if (FALSE == empty($parameters['limit'])) $limit = $parameters['limit'];
        if (FALSE == empty($parameters['offset'])) $offset = $parameters['offset']; else $offset = 0;

        unset($parameters['limit']);
        unset($parameters['offset']);

        if (FALSE == empty($limit))
        {
            $this->db->limit($limit, $offset);
        }

        $this->parseFilters($parameters);

        $query = $this->db->get($tablename);

        if ($query->num_rows() > 0)
        {
            if ($raw)
                return $query;

            $rows = $query->result();
            $objects = array();
            foreach ($rows as $row)
                $objects[] = $this->hidrate($row);

            return $objects;
        }
        else
        {
            return array();
        }
    }

    protected function select_fields($fields)
    {
        if (TRUE == empty($fields))
        {
            $fields = "`" . $this->getTableName() . "`.*";
        }
        $this->db->select($fields);
    }

    public function fetchOne($parameters = array())
    {
        $parameters['limit'] = 1;
        $list = $this->fetch($parameters);

        if (FALSE == empty($list))
        {
            return reset($list);
        }
        else
        {
            return null;
        }
    }

$this->db->select($fields); Fatal error: Call to a member function select() on a non-object中的外定义

该模型是一个自定义模型,应用程序模型对该模型进行了扩展。问题是为什么抛出该错误--数据库是正确的。

我在编码器1.7中创建了一个MY_loader,我尝试更新到代码点火器2

代码语言:javascript
复制
  class MY_Loader extends CI_Loader
  {
function model($model, $name = '', $db_conn = FALSE)
{       
    if (is_array($model))
    {
        foreach($model as $babe)
        {
            $this->model($babe);    
        }
        return;
    }

    if ($model == '')
    {
        return;
    }

    if ( substr($model, -4) == '_dao' )
    {
        return parent::model('dao/' . $model, $name, $db_conn);
    }

    parent::model( 'dao/' . $model . '_dao', $model, $db_conn);
    include_once APPPATH . '/models/' . $model . EXT;
}
  }

我不知道如何将这个模型更新为代码点火器2,而且我相信这个加载程序在我的MY_Model中会产生错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-12 19:59:09

我将尝试排除为什么db作为非对象返回。

我会删除所有的代码,并从一个简单的select()开始,如果这有效的话,我将开始逐步添加代码,并查看它的中断位置。

一切似乎都井然有序,但首先您需要查看基本功能是否存在。

因此,删除所有代码,查看基本select()是否工作,如果不起作用,则进一步排除故障。2)如果是这样的话,继续添加代码,看看什么会破坏select()语句。3)继续添加代码,直到发现问题为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22356384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档