add create:seed command
This commit is contained in:
parent
72bf97579b
commit
22ad849900
@ -293,4 +293,32 @@ class Utils
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下划线转驼峰
|
||||||
|
* 思路:
|
||||||
|
* step1.原字符串转小写,原字符串中的分隔符用空格替换,在字符串开头加上分隔符
|
||||||
|
* step2.将字符串中每个单词的首字母转换为大写,再去空格,去字符串首部附加的分隔符.
|
||||||
|
* @param $uncamelized_words
|
||||||
|
* @param string $separator
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function camelize($uncamelized_words,$separator='_')
|
||||||
|
{
|
||||||
|
$uncamelized_words = $separator. str_replace($separator, " ", strtolower($uncamelized_words));
|
||||||
|
return ltrim(str_replace(" ", "", ucwords($uncamelized_words)), $separator );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 驼峰命名转下划线命名
|
||||||
|
* 思路:
|
||||||
|
* @param $camelCaps
|
||||||
|
* @param string $separator
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function uncamelize($camelCaps,$separator='_')
|
||||||
|
{
|
||||||
|
return strtolower(preg_replace('/([a-z])([A-Z])/', "$1" . $separator . "$2", $camelCaps));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
71
extend/catcher/command/Tools/CreateSeedCommand.php
Normal file
71
extend/catcher/command/Tools/CreateSeedCommand.php
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
<?php
|
||||||
|
declare (strict_types = 1);
|
||||||
|
|
||||||
|
namespace catcher\command\Tools;
|
||||||
|
|
||||||
|
use catcher\CatchAdmin;
|
||||||
|
use catcher\facade\Http;
|
||||||
|
use catcher\Tree;
|
||||||
|
use catcher\Utils;
|
||||||
|
use think\console\Command;
|
||||||
|
use think\console\Input;
|
||||||
|
use think\console\input\Argument;
|
||||||
|
use think\console\input\Option;
|
||||||
|
use think\console\Output;
|
||||||
|
use think\facade\Db;
|
||||||
|
|
||||||
|
class CreateSeedCommand extends Command
|
||||||
|
{
|
||||||
|
protected $table;
|
||||||
|
|
||||||
|
protected function configure()
|
||||||
|
{
|
||||||
|
// 指令配置
|
||||||
|
$this->setName('create:seed')
|
||||||
|
->addArgument('table', Argument::REQUIRED, 'export tables')
|
||||||
|
->addOption('module', '-m', Option::VALUE_REQUIRED, 'module name')
|
||||||
|
->setDescription('Just for catchAdmin export data');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function execute(Input $input, Output $output)
|
||||||
|
{
|
||||||
|
$table = $input->getArgument('table');
|
||||||
|
$module = $input->getOption('module');
|
||||||
|
|
||||||
|
if ($module) {
|
||||||
|
$data = Db::name($table)->where('deleted_at', 0)
|
||||||
|
// ->where('module', $module)
|
||||||
|
->select()
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$data = Db::name($table)->where('deleted_at', 0)
|
||||||
|
->select()
|
||||||
|
->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($module) {
|
||||||
|
$data = var_export($data, true) . ';';
|
||||||
|
$this->exportSeed($data,$table, $module);
|
||||||
|
} else {
|
||||||
|
file_put_contents(root_path() . DIRECTORY_SEPARATOR . $table . '.php', "<?php\r\n return " . var_export($data, true) . ';');
|
||||||
|
}
|
||||||
|
$output->info('succeed!');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function exportSeed($data,$table, $module)
|
||||||
|
{
|
||||||
|
$stub = file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'seed.stub');
|
||||||
|
|
||||||
|
$model = ucfirst(Utils::camelize($table));
|
||||||
|
$class = ucfirst(Utils::camelize($table)) . 'Seed';
|
||||||
|
|
||||||
|
$stub = str_replace('{CLASS}', $class, $stub);
|
||||||
|
$stub = str_replace('{MODULE}', $module, $stub);
|
||||||
|
$stub = str_replace('{MODEL}', $model, $stub);
|
||||||
|
|
||||||
|
file_put_contents(CatchAdmin::moduleSeedsDirectory($module) . $class .'.php', str_replace('{DATA}', $data, $stub));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,12 +6,12 @@
|
|||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
// | Licensed ( https://github.com/yanwenwu/catch-admin/blob/master/LICENSE.txt )
|
// | Licensed ( https://github.com/yanwenwu/catch-admin/blob/master/LICENSE.txt )
|
||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
// | Author: JaguarJack [ njphper@gmail.com ]
|
// | Author: UCToo [ contact@uctoo.com ]
|
||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
|
|
||||||
use think\migration\Seeder;
|
use think\migration\Seeder;
|
||||||
|
|
||||||
class SeederClass extends Seeder
|
class {CLASS} extends Seeder
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run Method.
|
* Run Method.
|
||||||
@ -23,6 +23,10 @@ class SeederClass extends Seeder
|
|||||||
*/
|
*/
|
||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
|
$data = {DATA}
|
||||||
|
|
||||||
|
foreach ($data as $item) {
|
||||||
|
\catchAdmin\{MODULE}\model\{MODEL}::create($item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user