Передача переменных из модели в модель в codeigniter - PullRequest
1 голос
/ 09 июня 2010

Мне нужно передать переменную в модель, эта модель должна отправить другую обратно и использовать эту переменную для запроса другой модели.

EG:

У меня есть product_ID, который я отправляю в модель продукта, из которой я узнаю supplier_ID. Я хочу привязать этот идентификатор_поставщика к модели поставщика, чтобы получить имя поставщика.

Как вы реализуете это в codeigniter?

Ответы [ 5 ]

3 голосов
/ 09 июня 2010

Я бы обычно делал что-то подобное в моем контроллере:

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

$result = $this->Suppliers->get_supplier_name($this->Products->get_product_supplier($product_id));
1 голос
/ 09 июня 2010

Я бы сделал объединение между двумя таблицами и сделал бы один запрос.

0 голосов
/ 10 июня 2010

Почему бы что-то вроде этой работы для вас?

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

Мне кажется, очень просто.Или, возможно, вы могли бы уточнить, какой из этих подходов не дает того, что вам нужно?

0 голосов
/ 10 июня 2010

Как сказал Кемп, похоже, что лучшим вариантом будет объединение:

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

Конечно, если у вас есть причина оставить модели раздельными, это не поможет.

0 голосов
/ 09 июня 2010

Самый простой способ - установить его как общедоступную переменную (см. 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 в вашем контроллере, чтобы сделать его действительно глобальным, но я бы не стал делать это лично для аккуратности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...