在codeigniter中将变量从Model传递给Model

时间:2010-06-09 08:49:36

标签: php model-view-controller codeigniter variables

我需要将变量传递给模型,该模型需要发送另一个变量并使用该变量来查询不同的模型。

EG:

我有一个product_ID,我将其发送到产品型号,然后我找到了supplier_ID。我想将supplier_ID获取到供应商模型以获取供应商名称。

如何在codeigniter中实现此功能?

5 个答案:

答案 0 :(得分:3)

我通常会在我的控制器中做这样的事情:

$this->load->model('Products');
$this->load->model('Suppliers');

$result = $this->Suppliers->get_supplier_name($this->Products->get_product_supplier($product_id));

答案 1 :(得分:1)

我会在两个表之间进行连接并进行一次查询。

答案 2 :(得分:0)

最简单的方法是将其设置为公共变量(请参阅OOP中的visibility):

function blah() {
    public $product_id = 0;

    $this->load->model('Products');

    // Products model can set and access $this->product_id

    $this->load->model('Suppliers');

    // Suppliers model can also set and access $this->product_id
}

如果您真的想要在CI中,您可以在控制器中声明$ product_id,使其真正全球化,但我不会为了整洁而亲自做到这一点。

答案 3 :(得分:0)

就像肯普所说的那样,听起来像加入会是你最好的选择:

// pass the $product_ID variable to the model
$this->db->select('supplier_tbl.supplier_name');
$this->db->from('supplier_tbl');
$this->db->join('product_tbl','product_tbl.supplier_ID = supplier_tbl.supplier_ID');
$this->db->where('product.tbl',$product_ID);
$query = $this->db->get();

当然,如果您有理由将模型分开,这将无济于事。

答案 4 :(得分:0)

为什么这样的东西不适合你?

$s_id = $this->product_model->getSupplierID($p_id);
$s_name = $this->supplier_model->getSupplierName($s_id);

对我来说似乎非常简单。或者,也许您可​​以澄清哪种方法无法满足您的需求?