Как получить данные из другой базы данных в codeigniter? - PullRequest
1 голос
/ 25 марта 2020

config. php

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'exampleUser1';
$db['default']['password'] = '12345678';
$db['default']['database'] = 'exampleDB1';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = TRUE;

$db['otherdb']['hostname'] = "localhost";
$db['otherdb']['username'] = 'exampleUser2';
$db['otherdb']['password'] = '12345678';
$db['otherdb']['database'] = 'exampleDB2';
$db['otherdb']['dbdriver'] = "mysql";
$db['otherdb']['dbprefix'] = "";
$db['otherdb']['pconnect'] = FALSE;
$db['otherdb']['db_debug'] = TRUE;
$db['otherdb']['cache_on'] = FALSE;
$db['otherdb']['cachedir'] = "";
$db['otherdb']['char_set'] = "utf8";
$db['otherdb']['dbcollat'] = "utf8_general_ci";
$db['otherdb']['swap_pre'] = "";
$db['otherdb']['autoinit'] = TRUE;
$db['otherdb']['stricton'] = TRUE;

контроллер

$otherdb = $this->load->database('otherdb', TRUE);
$this->data['student_count'] = $otherdb->professor_m->ActiveStudent_count();

Модальный

function ActiveStudent_count() {
    $otherdb->from('student');
    $otherdb->join('classes', 'student.classesID = classes.classesID', 'LEFT');
    $otherdb->join('sub_courses', 'student.sub_coursesID = sub_courses.sub_coursesID', 'LEFT');
    $otherdb->join('invoice', 'student.studentID = invoice.studentID', 'LEFT');
    $otherdb->where('student.adminID',102);
    $otherdb->where('classes.status', 1);
    $otherdb->where('invoice.feetype', 'clg');
    $otherdb->where('student.status',1);
    $otherdb->where('invoice.student_position', 1);
    $otherdb->group_by('invoice.studentID');
    $adminID = $this->session->userdata("adminID");
    $usertype = $this->session->userdata("usertype");
    $loginuserID = $this->session->userdata("loginuserID"); 
    if ($usertype=='Teacher')
    {
        $otherdb->where('student.counsellor',$loginuserID);
        $otherdb->where('invoice.userID',$loginuserID);
    }
    $query  = $otherdb->get();
    return $query->num_rows();
}

просмотр / индекс. php

<?php
    echo $student_count;
?>

В этом коде у меня две разные базы данных на одном сервере. Теперь я просто создаю другое соединение с базой данных в config.php, и в моем контроллере я получаю данные из professor_m модально, но когда я получаю их в моем файле просмотра. Затем выдается ошибка, т.е. Message: Undefined property: CI_DB_mysql_driver::$professor_m. Итак, как я могу это исправить? Пожалуйста, помогите мне.

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Простой код в контроллере для вызова модели:

$data['student_count'] = $this->professor_m->ActiveStudent_count();

и выполнения этого кода в professor_m модель ActiveStudent_count() метод:

$this->otherdb = $this->load->database('exampleDB2', TRUE);

$this->otherdb->query() // just put your query here like what you want

Надеюсь, что это работает для вас

0 голосов
/ 25 марта 2020

вы должны использовать $otherdb = $this->load->database('otherdb', TRUE); внутри function ActiveStudent_count() { ИЛИ внутри конструктора модели, но не в контроллере.

обновить свой контроллер как

$this->load->model("math_model","professor_m");
$this->data['student_count'] = $this->professor_m->ActiveStudent_count();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...