Суммировать
Миграция базы данных аналогична SVN базы данных, которую можно удобно использовать для инициализации структуры данных системного приложения, создания или удаления таблиц, а также добавления или изменения полей таблиц в проектах групповой разработки.
Thinkphp предоставляетthink-migration
Миграция и заполнение данными расширенных пользовательских баз данных
миграция базы данных
1. Установите и создайте класс миграции
$ composer require topthink/think-migration=2.0.*
$ php think migrate:create Third
Первая буква имени таблицы должна быть заглавной, как показано на следующем рисунке:
Система автоматически сгенерирует файл класса миграции:
2. Изменить метод работы
use think\migration\Migrator;
use think\migration\db\Column;
use Phinx\Db\Adapter\MysqlAdapter; //如创建MYSQL特有字段,需导入该命名空间
class Test extends Migrator
{
public function change()
{
$table = $this->table('third', ['engine' => 'InnoDB', 'collation' => 'utf8_bin', 'comment' => '测试表']);
$table->addColumn('member_id', 'integer', ['limit' => 10, 'signed' => false, 'default' => '0', 'comment' => 'MYSQL:int'])//unsigned:('signed' => false)
->addColumn('thirdid', 'integer', ['limit' => MysqlAdapter::INT_TINY, 'signed' => false, 'default' => '0', 'comment' => 'MYSQL:tinyint'])//需导入命名空间
->addColumn('platform', 'string', ['limit' => 30, 'default' => '', 'comment' => 'MYSQL:varchar'])
->addColumn('fee', 'decimal', ['precision' => 10, 'scale' => 2, 'default' => '0', 'comment' => 'decimal'])//decimal(10,2):('precision' => 10, 'scale' => 2)
->addColumn('money', 'float', ['precision' => 10, 'scale' => 2, 'default' => '0', 'comment' => 'float'])
->addColumn('openid', 'text', ['default' => '', 'comment' => 'text'])
->addColumn('content', 'text', ['limit' => MysqlAdapter::TEXT_LONG, 'default' => '', 'comment' => 'MYSQL:longtext'])
->addColumn('is_show', 'enum', ['values' => ['false', 'ture'], 'default' => 'false', 'comment' => 'enum'])
->addColumn('delete_time', 'integer', ['limit' => 10, 'signed' => false, 'null' => true, 'default' => NULL, 'comment' => 'delete_time'])//null:('null' => true)
->addIndex(['member_id'], ['name' => 'member_id'])
->addIndex(['thirdid', 'member_id'], ['unique' => true, 'name' => 'thirdid'])
->create();
$rows = [ //插入数据
[
'member_id' => 1,
'platform' => 'zhifubao',
],
[
'member_id' => 2,
'platform' => 'weixin',
],
];
$table->insert($rows)->save();
}
}
или использоватьup
а такжеdown
метод, но с использованиемchange
После метода,up
а такжеdown
методы будут игнорироваться:
Please be aware that when a change method exists, Phinx will automatically ignore the up and down methods
public function up()
{
// add column type DOUBLE
$this->execute("ALTER TABLE zxcms_test ADD COLUMN much_money DOUBLE(10,2) unsigned NOT NULL DEFAULT '0.00'");
}
public function down()
{
$this->dropTable('third');
}
3. Выполните действие
$ php think migrate:run
Результат выглядит следующим образом:
При этом база данных будет генерироватьthird
стол иmigrations
поверхность,migrations
Таблица используется для записи записей этой операции:
4. Обновить данные
создать сноваmigrate
:
$ php think migrate:create ChangeThird
Затем напишите содержимое, которое необходимо обновить доchange
метод
public function change()
{
$table = $this->table('third');
$table->changeColumn('platform', 'string', ['limit' => 255])
->addColumn('password', 'string', array('after' => 'platform','limit' => 32, 'default' => md5('123456'), 'comment' => '用户密码'))
->save();
}
Сделайте это снова:
5. Выполнить откат
up
а такжеdown
Предоставленные методыmigrate:run
а такжеmigrate:rollback
функция, которую можно откатить следующей командойdown
операции в
$ php think migrate:rollback -t third
third
в файле классаdown
метод:
public function down()
{
$this->dropTable('third');
}
Результат выглядит следующим образом:
third
Таблица удалена:
заполнение данных
1. Создайте семена
$ php think seed:create Third
следующим образом:
Вы можете увидеть сгенерированные файлы:
2. Отредактируйте исходный файл:
public function run()
{
$data[] = [
'member_id' => 1,
'thirdid' => '1',
'platform' => 'zhansan',
];
$this->table('third')->insert($data)->save();
}
3. Начать заполнение базы данных
$ php think seed:run
Результат выглядит следующим образом:
Вы можете указать один или несколько SEED
$ php think seed:run -s Third
$ php think seed:run -s Third -s member
Используйте генератор поддельных данных
Ссылаться наfzaninotto/faker
Установитьfaker
библиотека классов
$ composer require fzaninotto/faker
использоватьfaker
Генерация данных
public function run()
{
$faker = Faker\Factory::create('zh_CN');//选择中文库
$data = [];
for ($i = 0; $i < 100; $i++) {
$data[] = [
'member_id' => $faker->randomDigit,
'thirdid' => $faker->randomDigit,
'platform' => $faker->word,
'openid' => sha1($faker->password),
'content' => $faker->realText(50),
];
}
$this->table('third')->insert($data)->save();
}
Результат выглядит следующим образом:
URL ссылкиThinkPHP5.1,Phinx