我需要你的帮助! 我有2个同名的模型
1 .... application / admin / user / models / User_model.php,使用此代码:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class User_model extends CI_Model
?>
2 .... application / front / user / models / User_model.php,使用此代码:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class User_model extends CI_Model
?>
两个班级没有差异。
我需要使用application/admin/user/models/User_model.php
来自application/front/user/controllers/User.php
我尝试进行以下更改:
如果我像这段代码那样添加application/front/user/models/User_model.php
命名空间:
<?php namespace customers;
defined('BASEPATH') OR exit('No direct script access allowed');
class User_model extends \CI_Model
<?
从application/front/user/controllers/User.php
开始,我致电application/admin/user/models/User_model.php
总是给我一个错误,因为application/front/user/models/User_model.php
未加载。
如果我从application/front/user/models/User_model.php
删除命名空间,我的代码始终会转到此模式,而不是admin/user/user_model
。
我需要避免更改admin/user/User_model.php
,因为很多类都使用此MODEL.I只能更改front/user/User_model.php
但我需要使用admin/user/user_model
。
我这样调用application / admin / user / models / User_model.php:
$this->load->model('user_model');
我需要加载application / admin / user / models / User_model.php
请帮帮我!!!! 谢谢! Ani
答案 0 :(得分:3)
这是不可能的,因为Codeigniter不支持命名空间
通常你会看到像
这样的错误Fatal error: Cannot declare class `User_model`, because the name is already in use
但Codeigniter阻止了这一点,因为它不会加载任何已加载的模型。您可以看到此here。
因此,摆脱痛苦的唯一方法就是简单地重命名你的模特 - 即使你不想;)
答案 1 :(得分:1)
希望这有助于你
您可以在以下模型中创建子目录:
application/models/admin/User_model.php
application/models/user/User_model2.php
加载模型如下:
$this->load->model('admin/User_model');
$this->load->model('user/User_model2');
您应该将模型分配给不同的对象名称,您可以通过加载方法的第二个参数指定它:
像这样使用它们:
$this->load->model('admin/User_model', 'admin_model');
$this->admin_model->some_method();
$this->load->model('user/User_model2', 'user_model');
$this->user_model->some_method();