2010-06-09 16 views
1

Je dois passer une variable à modéliser, ce modèle doit en renvoyer un autre et utiliser cette variable pour interroger un modèle différent.Passer des variables de Modèle à Modèle dans codeigniter

EG:

J'ai un Product_ID que j'envoie au modèle de produit, A partir de ce que je trouve le supplier_ID. Je veux saisir ce fournisseur_ID au modèle de fournisseur pour obtenir le nom du fournisseur.

Comment implémentez-vous ceci dans codeigniter?

Répondre

3

je serais généralement faire quelque chose comme ça dans mon contrôleur:

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

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

J'ai besoin pour obtenir une valeur des 'produits' à envoyer à 'fournisseurs', je essayé d'utiliser quelque chose comme '$ this-> products_model-> get_products (p_id $, et b_id $);' p_id est l'ID de produit que j'envoie pour obtenir l'information correcte et b_id est ce que je veux retourner –

1

je ferais une jointure entre les deux tables et faire une seule requête. manière

0

simple est de le définir comme une variable publique (voir visibility en POO):

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 
} 

Si vous voulez vraiment en CI, vous pouvez déclarer product_id de $ dans votre contrôleur pour le rendre vraiment mondial mais je ne le ferais pas personnellement pour la politesse.

0

Comme kemp dit, cela ressemble à une jointure serait votre meilleur pari:

// 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(); 

Bien sûr, si vous avez une raison de garder les modèles distincts, cela ne va pas aider.

0

Pourquoi quelque chose comme ça ne fonctionnerait pas pour vous?

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

Cela me semble très simple. Ou, peut-être pourriez-vous préciser quelle approche n'atteint pas ce dont vous avez besoin?

Questions connexes