runcmf / runcli
RunCli - 命令行界面。 [迁移、种子、从现有数据库生成迁移和种子、创建数据库、生成资源等等 :)]
Requires
- php: >=5.5.0
- illuminate/database: ~5.3
- symfony/console: 3.1.*
Requires (Dev)
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^2.5
- tracy/tracy: ^2.4
This package is auto-updated.
Last update: 2024-08-29 04:25:27 UTC
README
#RunCli ## 独立的命令行界面。
迁移、种子、从现有数据库生成迁移、模型和种子、生成资源、创建数据库
支持的驱动 mysql, pgsql, sqlite
$ mysql -V
mysql Ver 15.1 Distrib 10.1.16-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
$ psql --version
psql (PostgreSQL) 9.4.9
$ sqlite3
SQLite version 3.8.2 2013-12-06 14:53:30
主要目标是生成Eloquent ORM迁移,从现有数据库中,在Laravel之外使用Slim 3 框架
安装
$ composer require runcmf/runcli
- 将cli复制或
ln -s
到scripts_root/bin
#配置:脚本在路径中查找配置
app/Config/Settings.php runcmf/runcmf-skeleton
app/settings.php akrabat/slim3-skeleton
配置必须包含['settings']['db']部分。例如
defined('DS') || define('DS', DIRECTORY_SEPARATOR); define('DIR', realpath(__DIR__.'/../../') .DS); return [ 'settings' => [ 'displayErrorDetails' => true, 'determineRouteBeforeAppMiddleware' => true, 'addContentLengthHeader' => false, 'routerCacheFile' => DIR . 'var/cache/fastroute.cache', 'db' => [// database configuration 'default' => 'sqlite', 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => DIR . 'var/database/database.sqlite', 'prefix' => 'mybb_', ], 'mysql' => [ 'driver' => 'mysql', // 'engine' => 'MyISAM', 'engine' => 'InnoDB', 'host' => '127.0.0.1', 'database' => 'run', 'username' => 'dbuser', 'password' => '123', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => 'mybb_', ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => '127.0.0.1', 'database' => 'run', 'username' => 'dbuser', 'password' => '123', 'charset' => 'utf8', 'prefix' => 'mybb_', 'schema' => 'public', ], 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => '127.0.0.1', 'database' => 'run', 'username' => 'dbuser', 'password' => '123', 'prefix' => '', ], ], ], ... ... ...
用法
种子 & 迁移
php bin/cli migrate:fill
php bin/cli seed:fill
从现有数据库生成迁移
基于Xethron重做,部分代码来自 doctrine/dbal,但没有Laravel,way/generators
php bin/cli migrate:generate
`regip` varbinary(16) NOT NULL DEFAULT '', `lastip` varbinary(16) NOT NULL DEFAULT '', with keys ADD KEY `regip` (`regip`), ADD KEY `lastip` (`lastip`);
迁移到
$table->binary('regip', 16)->default('')->index('regip'); $table->binary('lastip', 16)->default('')->index('lastip');
迁移时出现异常
[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1170 BLOB/TEXT column 'regip' used in key specification without a key length (SQL: alter table `mybb_users` add index `regip`(`regip`))
解决方案1:如果您想使用二进制(16)
comment index $table->binary('regip', 16)->default('');//->index('regip'); $table->binary('lastip', 16)->default('');//->index('lastip'); and add in `up` section DB::statement('CREATE INDEX regip_idx ON '.DB::getTablePrefix().'users (regip(16));'); DB::statement('CREATE INDEX lastip_idx ON '.DB::getTablePrefix().'users (lastip(16));'); and add in `down` section DB::schema()->table('users', function($table) { $table->dropIndex('regip_idx'); }); DB::schema()->table('users', function($table) { $table->dropIndex('lastip_idx'); });
解决方案2:使用ipAddress重构您的代码 Eloquent ORM ipAddress
$table->ipAddress('visitor');
解决方案3: http://stackoverflow.com/questions/17795517/laravel-4-saving-ip-address-to-model
从现有数据库生成种子
基于orangehill/iseed重做
php bin/cli seed:generate
从现有数据库生成模型
php bin/cli model:generate --namespace='YourNameSpace\Models'
创建数据库
php bin/cli make:db [schema] [charset] [collation]
模式 - 可选,从配置中获取模式名称或生成空配置值时的异常
字符集 - 可选,默认值 [MySQL = utf8, PostgreSQL = UTF8];
校对 - 可选,默认值 [MySQL = utf8_general_ci, PostgreSQL = en_US.UTF-8];
测试
$ cd vendor/runcmf/runtracy
$ composer update
$ vendor/bin/phpunit
安全
如果您发现任何安全相关的问题,请通过电子邮件发送到1f7.wizard( at )gmail.com,而不是使用问题跟踪器。