Загрузить модель в Codeigniter 3.0.3
У меня есть проект с этой структурой в папке контроллеров:
- places.php
- users.php
- items.php
- ...
И в моей папке моделей:
- Place.php (имя внутри класса Place extends ActiveRecord \ Model)
- 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;
}
}
Это мой файл контроллера мест.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
2 ответа
Ваше имя файла модели должно быть
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;
}
}
Я думаю, что все правильно. Но проблема из-за этой линии..
class Place extends ActiveRecord\Model
Если вы определите новую модель, которая расширяет CI_Model
. И тогда название новой модели может не понравиться как ActiveRecord\Model
.Name может быть как ActiveRecordModel
. Так что одно решение для вас может быть.. заменить строку выше, как показано ниже, если вы определите новую модель с именем как ActiveRecordModel
в application/core
папка.
class Place extends ActiveRecordModel
Другое решение может быть, если вы не определили новую модель. Затем просто замените вышеуказанную строку как
class Place extends CI_Model