109 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
<?php
 | 
						|
 | 
						|
use think\migration\Migrator;
 | 
						|
use Phinx\Db\Adapter\AdapterFactory;
 | 
						|
 | 
						|
class CreateRulesTable extends Migrator
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Initialize method.
 | 
						|
     *
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    protected function init()
 | 
						|
    {
 | 
						|
        $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->setAdapter( $adapter);    
 | 
						|
    }
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * 获取数据库配置
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    protected function getDbConfig(): array
 | 
						|
    {
 | 
						|
        $default = config('tauthz.database.connection') ?: config('database.default');
 | 
						|
 | 
						|
        $config = config("database.connections.{$default}");
 | 
						|
 | 
						|
        if (0 == $config['deploy']) {
 | 
						|
            $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],
 | 
						|
            ];
 | 
						|
        }
 | 
						|
 | 
						|
        $table = config('database.migration_table', 'migrations');
 | 
						|
 | 
						|
        $dbConfig['default_migration_table'] = $dbConfig['table_prefix'] . $table;
 | 
						|
 | 
						|
        return $dbConfig;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Change Method.
 | 
						|
     *
 | 
						|
     * Write your reversible migrations using this method.
 | 
						|
     *
 | 
						|
     * More information on writing migrations is available here:
 | 
						|
     * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
 | 
						|
     *
 | 
						|
     * The following commands can be used in this method and Phinx will
 | 
						|
     * automatically reverse them when rolling back:
 | 
						|
     *
 | 
						|
     *    createTable
 | 
						|
     *    renameTable
 | 
						|
     *    addColumn
 | 
						|
     *    renameColumn
 | 
						|
     *    addIndex
 | 
						|
     *    addForeignKey
 | 
						|
     *
 | 
						|
     * Remember to call "create()" or "update()" and NOT "save()" when working
 | 
						|
     * with the Table class.
 | 
						|
     */
 | 
						|
    public function up()
 | 
						|
    {
 | 
						|
        $default = config('tauthz.default');
 | 
						|
        $table = $this->table(config('tauthz.enforcers.'.$default.'.database.rules_name'));
 | 
						|
        $table->addColumn('ptype', 'string', ['null' => true])
 | 
						|
            ->addColumn('v0', 'string', ['null' => true])
 | 
						|
            ->addColumn('v1', 'string', ['null' => true])
 | 
						|
            ->addColumn('v2', 'string', ['null' => true])
 | 
						|
            ->addColumn('v3', 'string', ['null' => true])
 | 
						|
            ->addColumn('v4', 'string', ['null' => true])
 | 
						|
            ->addColumn('v5', 'string', ['null' => true])
 | 
						|
            ->create();
 | 
						|
    }
 | 
						|
 | 
						|
    public function down()
 | 
						|
    {
 | 
						|
        $default = config('tauthz.default');
 | 
						|
        $table = $this->table(config('tauthz.enforcers.'.$default.'.database.rules_name'));
 | 
						|
        $table->drop();
 | 
						|
    }
 | 
						|
}
 |