Почему эта модель не возвращает никаких значений? - PullRequest
2 голосов
/ 27 января 2010

Я пытаюсь построить ОЧЕНЬ базовую модель-> контроллер-> структуру представления с CodeIgniter. Я бы предпочел использовать модели (и, что более важно, функции моделей) и контроллеры, чем выполнять запросы в каждом представлении.

Во-первых, вот модель:

class Leads extends Model {

    function Leads()
    {
        parent::Model();
    }

    function fetch_leads()
    {
        $query = $this->db->get('leads', 10);
        return $query->result();
    }

}

Вот контроллер, рассматриваемая только соответствующая функция:

function view()
{

    $this->load->model('Leads', '', TRUE);

    $data['query'] = $this->Leads->fetch_leads();

$this->load->view('html_head');
$this->load->view('leads/view', $data);
$this->load->view('html_foot');
}

Я думаю, что проблема в этой строке, возможно, я неправильно передаю данные в представление:

$data['query'] = $this->Leads->fetch_leads();

Теперь вид:

print_r $data;

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

EDIT: модель не была автоматически подключена к базе данных, поэтому я добавил этот параметр. Модель по-прежнему не возвращает значения.

Ответы [ 3 ]

2 голосов
/ 27 января 2010

это не сработает так, как вы.

return $query->result() возвращает массив строк. Чтобы правильно передать этот массив для просмотра, вам нужно сделать это следующим образом:

$view_data = array(
    'leads' => $leads,
);
$this->load->view('leads/view', $view_data);

Что происходит в представлении, так это то, что все элементы массива $view_data преобразуются в локальные (для представления) переменные. Следовательно, то, что в вашем контроллере является $view_data['leads'], становится, по вашему мнению, $leads.

0 голосов
/ 27 января 2010

Может быть проблема с тем, как вы передаете данные в представление. Попробуйте поместить $leads в массив.

Ex. $data['leads'] = $this->Leads->fetch_leads();

0 голосов
/ 27 января 2010

Вы должны передать ассоциативный массив методу $this->load->view().

Попробуйте это:

$leads = $this->Leads->fetch_leads();

$data["leads"] = $leads;

$this->load->view('html_head');

$this->load->view('leads/view', $data);

$this->load->view('html_foot');

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