为什么我的codeigniter模型不会加载?

时间:2011-07-18 16:49:00

标签: codeigniter model loading

这是我的模特:

   <?php

   class Dbtest extends CI_Model {

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }


    function getAll() {
        parent::Model();
        $this->db->select('title, content');
        $this->db->from('posts');
        $this->db->where('post_id', 1);

        $q = $this->db->get();

        if($q->num_rows() > 0) {
            foreach ($q->result() as $row) {
                $data[] = $row;
            }
            return $data;
        }
    }
   }

<?php class Dbtest extends CI_Model { function __construct() { // Call the Model constructor parent::__construct(); } function getAll() { parent::Model(); $this->db->select('title, content'); $this->db->from('posts'); $this->db->where('post_id', 1); $q = $this->db->get(); if($q->num_rows() > 0) { foreach ($q->result() as $row) { $data[] = $row; } return $data; } } }

这是我的控制器:

这是我的观点

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Dbtest extends CI_Controller {

    function index() {
        $this->load->model('dbtest');
        $data['rows'] = $this->dbtest->getAll();

        $this->load->view('dbtest', $data); 
    }
   }

我一直收到500服务器错误。我怎么可能做错了。我已经自动加载了数据库库。请帮助一个codeigniter新手尝试学习这个伟大的框架。

3 个答案:

答案 0 :(得分:6)

function getAll() {
    parent::Model();   //<-------------------Remove this line
    $this->db->select('title, content');
    $this->db->from('posts');

快速浏览后,为什么会出现这条线?

这是对旧版本的Model基类的php4构造函数调用,不再存在..

删除并重试。

修改

此外,您不能将模型和Controller命名为相同名称,它们具有名称空间冲突。

调用模型Dbtest_model或其他东西并以这种方式使用它。

此外,这是不必要的

    if($q->num_rows() > 0) {
        foreach ($q->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }

$q->result()返回一个数组,无需循环并重建......只需这样做......

    if($q->num_rows() > 0) {
        return $q->result();
    }

答案 1 :(得分:1)

经过一些非常糟糕的事情......我终于发现问题出在我的意图之后,在

之后放了一些Vars
class CI_model{}

在我的CI应用程序的核心模型(application / system / core / Model)中,仅适用于Eclipse / aptana / netbeans的自动完成产品。因此,如果您可以从干净的CI安装恢复正常,我认为它应该恢复正常,这是我的最终解决方案。快乐的编码!

答案 2 :(得分:0)

如果您拨打parent::CI_Model();而不是parent::__construct();会怎样?

Ci设计用于php4,直到php5才添加__construct()