FtheBuilder
FtheBuilder

Reputation: 1437

CI_Model not found in extending class

I can't instantiate my models manually on my controller using require_once, following is the problem:

Controller

<?php
require_once './application/models/portion/portioncreatormodel.php';
class Payment extends CI_Controller {
  function sample() {
    $pc = new PortionCreatorModel();
    echo 'OK';
  }
}

Model

<?php

class PortionCreatorModel extends CI_Model {
  function __construct() {
    parent::construct();
  }
}

When I load this model using $this->load->model('portion/portionCreatorModel') it works perfectly (in controllers or other models), when I load using require_once using this very same require_once './application/models/portion/portioncreatormodel'; it works perfectly in other models. Why doesn't it work properly on controllers? I found this in my error.log: PHP Fatal error: Class 'CI_Model' not found in /var/www/html/myerp/igniter/application/models/portion/portioncreatormodel.php on line 3

Note: I already tried this require_once:

require_once APPPATH.'/models/portion/portioncreatormodel.php';

Please, don't tell me the only way to solve it is renaming PortionCreatorModel to Portioncreator_Model, it is already working properly on models, the problem is on controllers.

Any glues?

Upvotes: 1

Views: 1635

Answers (1)

Dykotomee
Dykotomee

Reputation: 770

Try using this in your controller:

<?php
class Payment extends CI_Controller {
  function sample() {
    $this->load->model('PortionCreatorModel', 'pc');
    // Reference by using $this->pc
    echo 'OK';
  }
}

Reference: CodeIgniter: Models

Upvotes: 1

Related Questions