我有了所有常見的數據庫的功能,如一個型號:傳遞變量從控制器到模型(即延伸其它模型)笨
class MY_Model extends CI_Model {
public $table;
function __construct()
{
parent::__construct();
$this->load->database();
}
function insert($data) {
$this->db->insert($this->table,$data);
return $this->db->insert_id();
}
function update($where=array(),$data) {
$this->db->update($this->table,$data,$where);
return $this->db->affected_rows();
}
function delete($where=array()) {
$this->db->delete($this->table,$where);
return $this->db->affected_rows();
}
//ETC.
}
現在,我具有延伸它的模型,所以在構造我定義我想使用哪個表:
class other_model extends MY_Model {
function __construct()
{
parent::__construct();
$this->load->database();
$this->table = 'MY_TABLE';
}
}
而在控制器我只想做:
$this->load->model('other_model');
$id_affected = $this->other_model->insert(...);
現在,我想利用這個代碼的優勢,並重新使用它,所以我想使表名變量,從控制器傳遞到這個模型,如:
$this->load->model('other_model');
$table_name = 'TABLE_1'
$this->other_model->set_variable($table_name);
$id_affected = $this->other_model->insert(...);
有沒有辦法做到這一點? 我嘗試:
型號:
class other_model extends MY_Model {
var $variable;
function __construct() {
parent::__construct();
//tried here
//$this->load->database();
//$this->table = $variable;
}
function set_variable($variable) {
$this->variable = $variable;
//also tried here
//$this->load->database();
//$this->table = $variable;
}
}
控制器:
class test extends CI_Controller {
function tester() {
$this->load->model('other_model');
$variable = 'MY_TABLE_1'
$this->other_model->set_variable($variable);
}
}
因此控制器會是這樣:'$這 - >負載>模型( 'other_model'); $ this-> other_model-> set_variable('table','MY_TABLE_1');'? – cMinor 2013-05-11 03:46:28
是。據我所知,這將完成工作。當然沒有測試過。 – 2013-05-11 03:47:06
和模型'var $ variable;函數__construct(){ parent :: __ construct(); } function set_variable($ var,$ val){ $ this - > $ var = $ val; }}' – cMinor 2013-05-11 03:47:30