Klasa Database Forge
Klasa Database Forge zawiera funkcje, które pomogą Ci zarządzać bazą danych.
Spis treści
- Ładowanie klasy Forge
- Tworzenie bazy danych
- Usuwanie bazy danych
- Dodawanie kolumn (pól)
- Dodawania kluczy
- Tworzenie tabeli
- Usuwanie tabeli
- Zmiana nazwy tabeli
- Modyfikowanie tabeli
Ładowanie klasy Forge
Ważne: Podczas ładowania klasy Forge, driver dla bazy danych musi być już załadowany, ponieważ klasa Forge zależy od niego.
Załaduj klasę Forge w ten sposób:
$this->load->dbforge()
Po załadowaniu klasy, będziesz miał dostęp do jej funkcji za pomocą obiektu $this->dbforge:
$this->dbforge->jakas_funkcja()
$this->dbforge->create_database('nazwa_bd')
Pozwala na utworzenie tabeli określonej w pierwszym paramatrze. Zwraca TRUE/FALSE zależnie od sukcesu lub porażki:
if ($this->dbforge->create_database('moja_bd'))
{
echo 'Utworzono bazę danych!';
}
$this->dbforge->drop_database('moja_bd')
Pozwala na usunięcie bazy danych, określonej w pierwszym parametrze. Zwraca TRUE/FALSE zależnie od sukcesu lub porażki:
if ($this->dbforge->drop_database('moja_bd'))
{
echo 'Baza danych usunięta!';
}
Tworzenie i usuwanie tabel
Jest kilka rzeczy, które chciałbyś robić podczas tworzenia tabel. Dodawanie kolumn, dodawanie kluczy do tabeli, zmiana kolumn. CodeIgniter dostarcza do tego mechanizmy.
Dodawanie kolumn
Kolumny są tworzone poprzez tablicę asocjacyjną. Taka tablica musi zawierać klucz 'type', który określa typ danych dla kolumny. Dla przykładu: INT, VARCHAR, TEXT, itd. Wiele typów danych (np. VARCHAR), wymaga dodatkowo klucza 'constraint'.
$fields = array(
'users' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
);
// zamieni się w "users VARCHAR(100)" kiedy pole zostanie dodane.
Dodatkowo, następujące klucze/wartości mogą zostać użyte:
- unsigned/true : aby utworzyć "UNSIGNED" w definicji pola.
- default/value : aby utworzyć domyślną wartość w definicji pola.
- null/true : aby utworzyć "NULL" w definicji pola. Bez tego, pole będzie domyślnie ustawione na "NOT NULL".
- auto_increment/true : aby utworzyć flagę auto_increment dla pola. Zauważ, że pole musi posiadać typ, który wspiera taką właściwość, np. integer.
$fields = array(
'blog_id' => array(
'type' => 'INT',
'constraint' => 5,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'blog_title' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
'blog_author' => array(
'type' =>'VARCHAR',
'constraint' => '100',
'default' => 'King of Town',
),
'blog_description' => array(
'type' => 'TEXT',
'null' => TRUE,
),
);
Po tym jak kolumny zostaną zdefiniowane, mogą zostać dodane za pomocą funkcji $this->dbforge->add_field($fields);, która musi być poprzedzona wywołaniem funkcji create_table().
$this->dbforge->add_field()
Funkcja dodająca kolumny akceptuje powyższą tablicę.
Przypisywanie ciągu znaków jako kolumn
Jeśli wiesz dokładnie, w jaki sposób kolumna ma zostać stworzona, do funkcji add_field(), możesz przypisać ciąg znaków dla definicji kolumny.
$this->dbforge->add_field("label varchar(100) NOT NULL DEFAULT 'default label'");
Uwaga: Wiele odwołań do add_field() jest łączonych w jedno.
Tworzenie kolumny id
Istnieje specjalny wyjątek dla tworzenia kolumny id. Kolumna o typie id będzie automatycznie przypisana jako INT(9) auto_incrementing Primary Key.
$this->dbforge->add_field('id');
// daje id INT(9) NOT NULL AUTO_INCREMENT
Dodawanie kluczy
Zazwyczaj, będziesz chciał aby Twoja tabela miała klucze. Można to osiągnąć dzięki funkcji $this->dbforge->add_key('field'). Opcjonalny drugi parametr ustawiony na TRUE, sprawi że wartość zostanie ustawiona na primary key. Zauważ, że wywołanie funkcji add_key() musi zostać poprzedzone wywołaniem funkcji create_table().
Wiele kolumn z kluczem non-primary musi zostać wysłanych jako tablica. Poniżej przykład dla MySQL.
$this->dbforge->add_key('blog_id', TRUE);
// daje PRIMARY KEY `blog_id` (`blog_id`)
$this->dbforge->add_key('blog_id', TRUE);
$this->dbforge->add_key('site_id', TRUE);
// daje PRIMARY KEY `blog_id_site_id` (`blog_id`, `site_id`)
$this->dbforge->add_key('blog_name');
// daje KEY `blog_name` (`blog_name`)
$this->dbforge->add_key(array('blog_name', 'blog_label'));
// daje KEY `blog_name_blog_label` (`blog_name`, `blog_label`)
Tworzenie tabeli
Po tym jak zostały stworzone kolumny i klucze, możesz stworzyć tabelę za pomocą funkcji
$this->dbforge->create_table('table_name');
// daje CREATE TABLE table_name
Opcjonalny drugi parametr ustawiony na TRUE, dodaje klauzulę "IF NOT EXISTS" do definicji tabeli
$this->dbforge->create_table('table_name', TRUE);
// daje CREATE TABLE IF NOT EXISTS table_name
Usuwanie tabeli
Funkcja wykonuje DROP TABLE nazwa_tabeli
$this->dbforge->drop_table('table_name');
// daje DROP TABLE IF EXISTS table_name
Zmiana nazwy tabeli
Funkcja wykonuje zmianę nazwy tabeli
$this->dbforge->rename_table('old_table_name', 'new_table_name');
// daje ALTER TABLE old_table_name RENAME TO new_table_name
Modyfikowanie tabel
$this->dbforge->add_column()
Funkcja add_column() jest używana, aby dokonać zmian w istniejącej tabeli. Akceptuje te same pola w postaci tablicy jak powyżej i może zostać użyta dla nieograniczonej ilości kolumn.
$fields = array(
'preferences' => array('type' => 'TEXT')
);
$this->dbforge->add_column('table_name', $fields);
// daje ALTER TABLE table_name ADD preferences TEXT
$this->dbforge->drop_column()
Funkcja jest używana do usuwania kolumn z tabeli.
$this->dbforge->drop_column('table_name', 'column_to_drop');
$this->dbforge->modify_column()
Zasada działania tej funkcji taka sama jak funkcji add_column(), z tą różnicą, że nadpisuje ona istniejącą kolumnę, a nie dodaje nową. Aby zmienić nazwę kolumny mozesz dodać klucz "name" do tablicy definicji.
$fields = array(
'old_name' => array(
'name' => 'new_name',
'type' => 'TEXT',
),
);
$this->dbforge->modify_column('table_name', $fields);
// daje ALTER TABLE table_name CHANGE old_name new_name TEXT