我需要将变量传递给模型,该模型需要发送另一个变量并使用该变量来查询不同的模型。
EG:
我有一个product_ID,我将其发送到产品型号,然后我找到了supplier_ID。我想将supplier_ID获取到供应商模型以获取供应商名称。
如何在codeigniter中实现此功能?
答案 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);
对我来说似乎非常简单。或者,也许您可以澄清哪种方法无法满足您的需求?