Цикл Foreach, возвращающий данные как результат - PullRequest
0 голосов
/ 19 февраля 2012

У меня есть следующее Model, и я не уверен, как вернуть результат, чтобы я мог выбрать нужную строку, например, $this->model_name->function_name->function_value - или есть лучший способ?

Модель:

function companyDetails()
    {
       $this->db->select('coreCompanyName, coreContactName, coreContactEmail');

        $this->db->from('core');

        $query = $this->db->get(1);

        foreach($query->result() as $row)
        {
            echo $row->coreCompanyName;
        }
        return $query;
    }

1 Ответ

2 голосов
/ 19 февраля 2012

Как правило, вы вызываете функцию модели что-то вроде getCompanyDetailsByID(), где вы передаете уникальный идентификатор, и она возвращает один объект результата соответственно:

<?php
function getCompanyDetailsByID($id)
{
    $this->db->select('coreCompanyName, coreContactName, coreContactEmail');
    $this->db->where('coreCompanyID', $id);
    return $this->db->get('core')->first_row();
}

Замените "coreCompanyID" на имя основного столбца.

Сложение:

Вот как вы получите всю информацию о компаниях:

<?php
function getCompanyDetails()
{
    $this->db->select('coreCompanyName, coreContactName, coreContactEmail');
    return $this->db->get('core')->result();
}

// And then in your controller:
function display()
{
    $this->load->model('core');
    $companies = $this->core->getCompanyDetails();
    // Here's where you would probably load the data into a view
    foreach ($companies as $company)
    {
        echo $company->coreCompanyName.'<br />';
    }
}

ЗАКЛЮЧИТЕЛЬНЫЙ ОТВЕТ! : P

<?php
function companyDetails()
{
    static $details;

    if ( !$details)
    {
        $this->db->select('coreCompanyName, coreContactName, coreContactEmail');
        $this->db->where('coreCompanyID', $id);
        $details = $this->db->get('core')->first_row();
    }

    return $details;
}

Теперь вы можете сделать несколько вызовов этой функции, и она попадет в вашу базу данных только один раз, например:

<?php
echo $this->core_model->companyDetails()->coreCompanyName;
// do stuff
echo $this->core_model->companyDetails()->coreContactName;
// more stuff
echo $this->core_model->companyDetails()->coreContactEmail;

Все это попало в вашу базу данных только один раз.

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