2016-08-11 7 views
0

Ich benutze CodeIgniter 3.1.0, um eine App zu entwickeln. Um die Installation zu verbessern, habe ich einen Install_Controller und ein Install_Model geschrieben. Ich verwende die Database Forge-Klasse, um die Datenbank zu verwalten. Dank ihm kann ich eine Datenbank erstellen, aber ich kann nicht prüfen, ob es existiert. Eigentlich bestand meine Idee darin, eine Anfrage an dbforge zu übergeben, wie "CREATE DATABASE WENN NOT EXISTS mydatabase". Ich habe das Dokument gesucht, aber es gab keine Funktion, die meine Anforderungen erfüllen konnte. Wo kann ich eine solche Anfrage schreiben? HierCodeIgniter: Datenbank Forge verwenden, um zu testen, ob DB existiert

ist ein Auszug aus dem ehemaligen:

$this->load->model('Install_Model'); 
$this->Install_Model->launchInstall(); 

Hier ist der Code des letzteren:

class Install_Model extends CI_Model { 

    public function __construct() { 

     parent::__construct(); 

      $this->load->dbforge(); 

    } 

    public function index() { 

     if ($this->dbforge->create_database('mydatabase')) 
     { 
      echo "OK"; 
     } 

     else { 

      echo "Error somewhere"; 
     } 

     $this->load->database('mydatabase'); 
    } 

} 

Antwort

0

Sie diese benutzerdefinierten SQL-Abfrage-Funktion in Ihrem Installationsskript verwenden kann neue Datenbank erstellen .

public function createDB($databse) { 
    $strSQL = "CREATE DATABASE IF NOT EXISTS $databse"; 
    $query = $this->db->query($strSQL); 
    if (!$query) { 
     throw new Exception($this->db->_error_message(), 
     $this->db->_error_number()); 
       return FALSE; 
      } else { 
       return TRUE; 
      } 

} 
+0

danke, daher gibt es keine Möglichkeit, OOP mit dbforge Klasse zu verwenden? – Fafanellu

+0

Sie können die Klasse nach Ihren Anforderungen ändern.So keine Sorgen in Bezug auf seine Architektur.Ich zeige Ihnen nur eine Lösung nur mit CI Active Records-Konzepte. – Tharanga

+0

Ja, ich habe mich zu sehr auf dbforge konzentriert und fast vergessen, dass normale Abfragen verwendet werden können :) – Fafanellu

Verwandte Themen