Почему не загружается моя модель кодового указателя? - PullRequest
0 голосов
/ 18 июля 2011

Вот моя модель:

</p> <pre><code> <?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); 
    }
   }

А вот и мой взгляд

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

   <html>
      <head>
      <title></title>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>

     <body>
    <div id="container">
        <p>My view has been loaded</p>
        <?php foreach($rows as $r) : ?>

        <h1><?php echo $r->title; ?></h1>
        <div><?php echo $r->content; ?></div>

        <?php endforeach; ?>
        </div>
     </body>
   </html>

Я получаю 500 ошибок сервера. Что я мог делать не так? Я автоматически загрузил библиотеку базы данных. Пожалуйста, помогите новичку codeigniter, пытающемуся изучить эту замечательную структуру.

Ответы [ 3 ]

6 голосов
/ 18 июля 2011
function getAll() {
    parent::Model();   //<-------------------Remove this line
    $this->db->select('title, content');
    $this->db->from('posts');

После быстрого взгляда, почему эта линия там?

Это вызов конструктора php4 старой версии базового класса Model, который больше не существует ..

удалите и попробуйте снова.

EDIT

Кроме того, вы не можете присвоить модели и контроллеру одно и то же имя, у них конфликты пространства имен.

назовите модель 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 голос
/ 07 июля 2013

Ну, после некоторых довольно дерьмовых вещей ... Я, наконец, обнаружил, что проблема была в моем желании поставить несколько Vars после

class CI_model{}

в Базовой модели (приложение / система / ядро ​​/ модель) моего приложения CI, только для товаров автозаполнения для Eclipse / aptana / netbeans. Так что, если вы можете вернуться к нормальной работе с чистой установки CI, я думаю, что она должна вернуться к нормальной, это было мое окончательное решение. Удачного кодирования!

0 голосов
/ 18 июля 2011

Что произойдет, если вы позвоните parent::CI_Model(); вместо parent::__construct();?

Ci предназначен для работы на php4, а __construct() не был добавлен до php5.

...