runcmf/runcli

RunCli - 命令行界面。 [迁移、种子、从现有数据库生成迁移和种子、创建数据库、生成资源等等 :)]

0.1.1 2016-12-23 16:12 UTC

This package is auto-updated.

Last update: 2024-08-29 04:25:27 UTC


README

Build Status Coverage Status Code Climate Latest Version on Packagist Total Downloads Software License

#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

example

php bin/cli seed:fill

example

从现有数据库生成迁移

基于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

example

从现有数据库生成模型

基于user11001/eloquent-model-generator重做

php bin/cli model:generate --namespace='YourNameSpace\Models'

example

创建数据库

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,而不是使用问题跟踪器。

致谢

许可

Apache License 版本 2.0