2016-08-06 3 views
0

Homemodel.phpFatal error: Call auf eine Elementfunktion get() auf einem Nicht-Objekt in [Codeigniter]

<?php 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
class HomeModel extends CI_Model{ 

    private $DB1, $DB2; 

    function __construct() 
    { 
     parent::__construct(); 
     $this->DB1 = $this->load->database('sample'); 
    } 

    public function getData(){ 

     /* @var $query type */ 
     $query = $this->DB1->get('employee'); 
     return $query->result(); // Standard Query With Multiple Results (Object Version) 

    } 

}//class 

home.php (Controller)

<?php 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
class Home extends CI_Controller{ 

// private $View; 

    public function index(){ 

     $this->load->model('HomeModel'); 
     $db_data['eduData'] = $this->HomeModel->getData(); 

     $this->load->view('View', $db_data); 
    } 
} 

Ich habe versucht oben Weg, um Daten von db zu holen, aber ich habe Fehler als

Wie kann ich diesen Fehler beheben? und ich habe noch einen weiteren Zweifel für Controller Home.php Datei, ich habe index() call default definiert, und ich habe versucht, diesen Funktionsnamen zu ändern, ich habe Fehler, wie man diesen Fehler auch zu beheben?

+0

hinzufügen 'true' bei' $ this-> DB1 = $ this-> last-> Datenbank ('Probe', TRUE); 'und überprüfen !! – Saty

+0

@Balakumar B haben meine Antwort geschrieben, sollte für Sie arbeiten. – user4419336

+0

Nach dem Hinzufügen von TRUE habe ich diesen Fehler ' Ein Fehler wurde aufgetreten Sie haben eine ungültige Datenbank Verbindungsgruppe (Beispiel) in Ihrer Datei config/database.php angegeben. ' –

Antwort

0

Sie müssen zuerst die Datenbank laden. CodeIgniter wird es nicht standardmäßig für Sie laden.

Sie können es entweder hinzufügen, wie /config/autoload.php so

$autoload['libraries'] = array('database'); 

Oder man kann es auf Anfrage laden, wann immer Sie

$this->load->database(); 
+0

Sie müssen die Bibliothek nicht automatisch laden http://www.codeigniter.com/user_guide/database/connecting.html#manually-connecting-to-a-database – user4419336

0

Sie fehlen durch den Aufruf der db wollen in dein Code.

Change This

$query = $this->DB1->get('employee'); 

To This

$query = $this->DB1->db->get('employee'); 

Weil Sie sample als Datenbankgruppe angegeben haben, müssen Sie sicherstellen, dass es in database.php

eingerichtet ist

Multiple Datenbank

$active_group = 'default'; 
$query_builder = TRUE; 

$db['default'] = array(
    'dsn' => '', 
    'hostname' => 'localhost', 
    'username' => 'root', 
    'password' => '', 
    'database' => 'project-1', 
    'dbdriver' => 'mysqli', 
    'dbprefix' => '', 
    'pconnect' => FALSE, 
    'db_debug' => (ENVIRONMENT !== 'production'), 
    'cache_on' => FALSE, 
    'cachedir' => '', 
    'char_set' => 'utf8', 
    'dbcollat' => 'utf8_general_ci', 
    'swap_pre' => '', 
    'encrypt' => FALSE, 
    'compress' => FALSE, 
    'stricton' => FALSE, 
    'failover' => array(), 
    'save_queries' => TRUE 
); 


$db['sample'] = array(
    'dsn' => '', 
    'hostname' => 'localhost', 
    'username' => 'root', 
    'password' => '', 
    'database' => 'project-2', 
    'dbdriver' => 'mysqli', 
    'dbprefix' => '', 
    'pconnect' => FALSE, 
    'db_debug' => (ENVIRONMENT !== 'production'), 
    'cache_on' => FALSE, 
    'cachedir' => '', 
    'char_set' => 'utf8', 
    'dbcollat' => 'utf8_general_ci', 
    'swap_pre' => '', 
    'encrypt' => FALSE, 
    'compress' => FALSE, 
    'stricton' => FALSE, 
    'failover' => array(), 
    'save_queries' => TRUE 
); 

Und Sie haben Ihr Modell falsch benannt sollte mit dem ersten Buchstaben nur Großbuchstaben benannt werden.

Modell

http://www.codeigniter.com/user_guide/general/models.html#anatomy-of-a-model

Dateiname Home_model.php

<?php 

class Home_model extends CI_Model { 

    private $DB1; 
    private $DB2; 

    public function __construct() { 
     parent::__construct(); 
     $this->DB1 = $this->load->database('sample'); 
    } 

    public function getData() { 
     $query = $this->DB1->db->get('employee'); 

     if ($query->num_rows() > 0) { 
      return $query->result(); 
     } else { 
      return false; 
     } 
    } 

} 

-Controller

http://www.codeigniter.com/user_guide/general/controllers.html#let-s-try-it-hello-world

Dateiname home.php

<?php 

class Home extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('home_model'); 
    } 

    public function index() { 

     $db_data['eduData'] = $this->home_model->getData(); 

     $this->load->view('View', $db_data); 
    } 
} 
+0

Ich habe meinen Controller 'Home' benannt ersten Buchstaben ist Großbuchstaben –

+0

Haben Sie versucht, meine Lösung an der Spitze der Antwort "db" – user4419336

+0

Ja, ich tat, aber ich bekam Fehler ' Ein Fehler aufgetreten Sie haben eine ungültige Datenbank Verbindungsgruppe (Beispiel) in Ihrer Datei config/database.php angegeben. 'nach der Änderung' $ query = $ this-> DB1-> db-> get ('Mitarbeiter'); ' –

Verwandte Themen