Загрузить модель в Codeigniter 3.0.3

У меня есть проект с этой структурой в папке контроллеров:

  • places.php
  • users.php
  • items.php

И в моей папке моделей:

  1. Place.php (имя внутри класса Place extends ActiveRecord \ Model)
  2. User.php

Внутри моего контроллера place.php, если я хочу загрузить модель, я должен сделать именно это:

$this->load->model('Place');

И после этого я должен вызвать свой метод так:

$this->place->get_all_places();

Он работал на моем локальном хосте, но не на моем сервере. Я проверяю свою версию php на сервере, и это 5.6.

Как я могу это исправить?

Это мой файл модели Place.php

    class Place extends ActiveRecord\Model
{
static $table_name = 'places';
static $has_many = array(
);public function get_all_places()
{
return true;
}
}

Это мой файл контроллера places.php

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

class Places extends MY_Controller {

function __construct()
{
parent::__construct();

if($this->user){
$access = TRUE;

}else{
redirect('login');
}

}
function index()
{
$this->content_view = 'places/all';
}

function get_places(){

$this->theme_view = '';

$this->load->model('Place');
$this->place->get_all_places();
}
}

И ошибка была в том, что:

Unable to locate the model you have specified: place

0

Решение

Ваше имя файла модели должно быть

Places_model.php

и внутри модели

class Places_Model extends CI_Model # Changed
{
static $table_name = 'places';
static $has_many = array();public function get_all_places()
{
return true;
}

}

Модели в Codeigniter

3

Другие решения

Я думаю, что все правильно. Но проблема из-за этой линии ..

class Place extends ActiveRecord\Model

Если вы определите новую модель, которая расширяет CI_Model. И тогда название новой модели может не понравиться как ActiveRecord\Model.Name может быть как ActiveRecordModel. Так что одно решение для вас может быть .. заменить строку выше, как показано ниже, если вы определите новую модель с именем как ActiveRecordModel в application/core папка.

class Place extends ActiveRecordModel

Другое решение может быть, если вы не определили какую-либо новую модель. Затем просто замените вышеуказанную строку как

 class Place extends CI_Model
0