如何将动态表名称传递给PHP代码点火器基础模型


How pass dynamic Table name to PHP codeigniter-base-model

我使用的是PHP和jamierumbelow/codeigniter基本模型。我有以下表格

Table name: class_2014
Table name: class_2015
Table name: class_2016

所有class_*表在结构基础、字段名称和其他属性上都是相同的。唯一的区别是名称和数据。

我在PHP中有一个变量,它包含YEAR值,例如$strYear='2015'。

如何根据strYear持有的任何值变量将$_table参数动态传递或构建到"Model_",例如$strYear='2015'*

我的模型文件如下,

<?php
class Model_class extends MY_Model{
    protected $_table = 'class_2015'; //HOW TO PASS THIS DYNAMICALLY
    protected $primary_key = 'classId';
    protected $return_type = 'array';
}

我的get函数如下,

// GET CLASS
    function class_get(){
        $classId = $this->uri->segment(3);
        $this->load->model('Model_class');
        $strYear = '2015'
        if(!$classId) {
            $class = $this->Model_class->get_all();
        }else{
            $class = $this->Model_class->get_by(array('classId'=>$classId));
        }
        if(isset($class['classId'])){
            $this->response($class);
        }else{
            $this->response($class);
        }
    }

您可以将Construct添加到您的模型中,如下所示:

public function __construct($name)
{
    parent::__construct();
    $this->_table = $name;
}

当你在控制器中调用你的模型时,将名称作为参数,如下所示:

 $MyModel = new MyModel($name)