| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- // +----------------------------------------------------------------------
- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2016 http://thinkphp.cn All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: yunwuxin <448901948@qq.com>
- // +----------------------------------------------------------------------
- namespace think\migration;
- use InvalidArgumentException;
- use Phinx\Db\Adapter\AdapterFactory;
- use think\Config;
- use think\Db;
- abstract class Command extends \think\console\Command
- {
- protected $config = 'database';
- public function getAdapter()
- {
- if (isset($this->adapter)) {
- return $this->adapter;
- }
- $options = $this->getDbConfig();
- $adapter = AdapterFactory::instance()->getAdapter($options['adapter'], $options);
- if ($adapter->hasOption('table_prefix') || $adapter->hasOption('table_suffix')) {
- $adapter = AdapterFactory::instance()->getWrapper('prefix', $adapter);
- }
- $this->adapter = $adapter;
- return $adapter;
- }
- /**
- * 获取数据库配置
- * @return array
- */
- protected function getDbConfig()
- {
- $config = Db::connect($this->config)->getConfig();
- if ($config['deploy'] == 0) {
- $dbConfig = [
- 'adapter' => $config['type'],
- 'host' => $config['hostname'],
- 'name' => $config['database'],
- 'user' => $config['username'],
- 'pass' => $config['password'],
- 'port' => $config['hostport'],
- 'charset' => $config['charset'],
- 'table_prefix' => $config['prefix'],
- ];
- } else {
- $dbConfig = [
- 'adapter' => explode(',', $config['type'])[0],
- 'host' => explode(',', $config['hostname'])[0],
- 'name' => explode(',', $config['database'])[0],
- 'user' => explode(',', $config['username'])[0],
- 'pass' => explode(',', $config['password'])[0],
- 'port' => explode(',', $config['hostport'])[0],
- 'charset' => explode(',', $config['charset'])[0],
- 'table_prefix' => explode(',', $config['prefix'])[0],
- ];
- }
- $dbConfig['default_migration_table'] = $this->getConfig('table', $dbConfig['table_prefix'] . 'migrations');
- return $dbConfig;
- }
- protected function getConfig($name, $default = null)
- {
- $config = Config::get('migration');
- return isset($config[$name]) ? $config[$name] : $default;
- }
- protected function verifyMigrationDirectory($path)
- {
- if (!is_dir($path)) {
- throw new InvalidArgumentException(sprintf('Migration directory "%s" does not exist', $path));
- }
- if (!is_writable($path)) {
- throw new InvalidArgumentException(sprintf('Migration directory "%s" is not writable', $path));
- }
- }
- }
|