Codeigniter: многоуровневая модель расширяется, не работает. Получение ошибки «Класс не найден»

Я пытаюсь применить многоуровневые расширения в моделях.

Смотрите мой код ниже.

У меня есть одна модель «Заказ», которая расширяет основную модель CI

Class Order extends CI_Model {
function __construct() {
parent::__construct();
}
}

Сейчас я создаю новую модель «Seller_order» из модели «Order»

Class Seller_order extends Order {
function __construct() {
parent::__construct();
}
}

Теперь, когда я загружаю модель «Seller_order» внутри контроллера.

class Seller_order_controller extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('Seller_order');
}
}

Во время загрузки я получаю следующую ошибку:

Fatal error: Class 'Order' not found

Помогите, пожалуйста.
Нужно ли сначала загружать модель «Order», затем «Seller_order» ??
Я думаю, что мне не нужно загружать модель «Заказ», если я ее расширяю.

1

Решение

Я не собираюсь оборачивать это многими словами, надеясь, что сам код может объяснить, что необходимо.

Я добавил некоторые отладочные эхо, чтобы показать, как все работает, что я и сделал, когда «поиграл» с этим, чтобы понять это.

Я приму следующий макет … Не так, как у вас, поэтому вам придется изменить его, чтобы удовлетворить.

application
-> controllers
-> Seller_order_controller.php
-> models
-> Order.php
-> Seller_order.php

Контроллер — Продавец_order_controller

class Seller_order_controller extends CI_Controller {
function __construct() {
parent::__construct();
echo "construct(): I am the <b>Seller Order Controller</b> Constructor<br>";
$this->load->model('seller_order');
}

public function index() {
echo "This worked";
echo '<br>';
echo $this->seller_order->show_order();
}
}

Модель — Seller_order.php

require APPPATH.'models/Order.php';

Class Seller_order extends Order {
function __construct() {
parent::__construct();
echo "construct(): I am the <b>Seller Order</b> Constructor<br>";
}
}

Модель — Order.php

Class Order extends CI_Model {
function __construct() {
parent::__construct();
echo "construct(): I am the <b>Order</b> Constructor<br>";
}

public function show_order() {
echo "This is showing an Order";
echo '<br>';
}
}

Как примечание стороны: Не уверен, почему вы хотите расширить модели, как это. Обычное правило — каждый модуль имеет свою собственную модель (ы).
Мне никогда не нужно было этого делать, но если я когда-нибудь это сделаю, то теперь я знаю, как это сделать.

2

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

Других решений пока нет …

По вопросам рекламы [email protected]