я читаю этот документация относительно Кузница Класс из CodeIgniter и мне нравится идея, что я могу создать новую БД, используя этот класс, и это прекрасно как раз то, что мне нужно.
Что мне нужно, это использовать это create_database
$this->dbforge->create_database('db_name')
Но мне было интересно, где код Кузница Класс должен идти точно? Должно ли это быть в одном из контроллеров, у него есть лучшее место? Где лучшая практика для этого? должен ли он быть в библиотеке или в папке миграции, если да, то в какой функции? вверх функционировать? CodeIgniter не указывает в документации!
это то, что я до сих пор добавил код для создания таблицы, но где же create_database функция идет?
<?php
class Migration_Users extends CI_Migration {
public function up(){
$this->dbforge->add_field("`id` int(11) NOT NULL AUTO_INCREMENT");
$this->dbforge->add_field("`role_id` int(11) NOT NULL DEFAULT '2'");
$this->dbforge->add_field("`username` varchar(25) COLLATE utf8_bin NOT NULL UNIQUE");
$this->dbforge->add_field("`password` varchar(1024) COLLATE utf8_bin NOT NULL");
$this->dbforge->add_field("`email` varchar(100) COLLATE utf8_bin NOT NULL UNIQUE");
$this->dbforge->add_field("`banned` tinyint(1) NOT NULL DEFAULT '0'");
$this->dbforge->add_field("`ban_reason` varchar(255) COLLATE utf8_bin DEFAULT NULL");
$this->dbforge->add_field("`newpass` varchar(34) COLLATE utf8_bin DEFAULT NULL");
$this->dbforge->add_field("`newpass_key` varchar(32) COLLATE utf8_bin DEFAULT NULL");
$this->dbforge->add_field("`newpass_time` datetime DEFAULT NULL");
$this->dbforge->add_field("`last_ip` varchar(40) COLLATE utf8_bin NOT NULL");
$this->dbforge->add_field("`last_login` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'");
$this->dbforge->add_field("`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'");
$this->dbforge->add_field("`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP");
$this->dbforge->add_field("`deleted` tinyint(1) NOT NULL DEFAULT '0'");
$this->dbforge->add_key('id', TRUE);
$this->dbforge->create_table('users', TRUE);
}
public function down(){
$this->dbforge->drop_table('users');
}
}
Все ваши потребности там в сети попробуйте погуглить это 🙂
Вам необходимо создать файл в этом новом каталоге, и формат имен должен начинаться с номера вашей версии, за которым следует имя вашего класса (сделайте, чтобы оно описывало изменения, которые вы делаете, т.е. ваш первый может быть: initial_schema). Мой первый файл миграции назывался: 001_initial_schema.php, а следующий — 002_add_comments.
Ваш файл будет выглядеть примерно так:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_Initial_schema extends CI_Migration {
public function up()
{
$this->dbforge->add_field(array(
'postid' => array(
'type' => 'INT',
'constraint' => 11,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'title' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
'content' => array(
'type' => 'TEXT',
'null' => TRUE,
),
));
$this->dbforge->create_table('posts');
}
public function down()
{
$this->dbforge->drop_table('posts');
}
}
Вы заметите, что в этом классе есть две функции (вверх и вниз). Функция up запускается при обновлении до или после этой версии, а также функция down запускается, если вы понижаете вашу базу данных (используя файл конфигурации) ниже этой версии. Ваша функция «вниз» всегда будет делать то, что делает ваша функция «вверх». По сути, восстановление вашей базы данных до состояния, в котором она была до добавления этой версии. Также обратите внимание, что имя вышеупомянутого класса совпадает с предлагаемым именем файла, которое я дал ранее (кроме слова «Миграция»), код ожидает, что класс будет назван таким образом, и без него работать не будет.
Я не буду вдаваться в подробности о формате, который будет использоваться для массива полей при создании или изменении таблиц, так как руководство пользователя CodeIgniter для класса Database Forge уже прекрасно объясняет это.
Единственное предостережение, которое я заметил, это когда вы хотите иметь текстовое или varchar поле со значением по умолчанию, равным NULL. Обычно в phpMyAdmin вы должны отметить поле Null, а также установить значение по умолчанию Null. Однако все, что вам нужно сделать здесь, это указать в качестве значения ИСТИНА значение null, которое вы сможете увидеть из моего примера выше. Если вы попытаетесь определить default как null, тогда он фактически установит default как пустую строку. Я предполагаю, что эта проблема будет в конечном счете прояснена, но пока вы помните об этом, избежать этого не сложно.
Ввод в Пра
Других решений пока нет …