У меня есть проект с этой структурой в папке контроллеров:
И в моей папке моделей:
Внутри моего контроллера 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
Ваше имя файла модели должно быть
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