mysql修改字段默认值

2021-01-25 15:08:39 阅读:1 编辑
function getColumns($table)
{
//获取指定表的所有列
    $result = [];
    $columns = \DB::connection()->getDoctrineSchemaManager()->listTableColumns($table);
    //dd($columns);
    foreach ($columns as $item) {
        // if($item->type)
        //dd($item->getType());
        //dd($item->getNotnull());
        if (!$item->getNotnull()) {
            if ($item->getType() instanceof \Doctrine\DBAL\Types\IntegerType) {
                //dd($item);
                if ($item->getDefault() == null) {
                    $result[] = $item->getName();
                    //$item->setDefault(0);
                }
            } else if ($item->getType() instanceof \Doctrine\DBAL\Types\DecimalType) {
                //dd($item);
                if ($item->getDefault() == null) {
                    $result[] = $item->getName();
                    //  $item->setDefault(0);
                }
            }

        }

    }
    return $result;
}

Artisan::command('get_sql', function () {
//获取表及列结构
    //$tables = DB::connection()->getDoctrineSchemaManager()->listTables();
//获取表名
    $table_names = DB::connection()->getDoctrineSchemaManager()->listTableNames();
    //dd($table_names);
    foreach ($table_names as $key => $value) {
        $table_name = $value;
        //获取指定表的所有列
        $columns = getColumns($value);
        echo $value . "\n";
        var_dump($columns);
        foreach ($columns as $item) {
            $sql = sprintf("alter table %s alter column %s set default 0;", $table_name, $item);
            \DB::select($sql);
        }

    }
    echo "ok";
})->describe('test data2');

Artisan::command('get_remove_data', function () {
    $table_names = DB::connection()->getDoctrineSchemaManager()->listTableNames();
    $result = [];
    $ingore_tables = [
        "ims_xiaozhaocheju_make",
        "ims_xiaozhaocheju_model",
        "ims_xiaozhaocheju_modelyear",
        "ims_xiaozhaocheju_car_color",
        "ims_xiaozhaocheju_county",
        "ims_xiaozhaocheju_city",
        "ims_xiaozhaocheju_province",
    ];
    //dd($table_names);
    foreach ($table_names as $key => $value) {
        $table_name = $value;
        if (!in_array($table_name, $ingore_tables)) {
            if ($table_name == "ims_attachment_groups" || $table_name == "ims_attachments" ||
                \Illuminate\Support\Str::startsWith($table_name, ["ims_xiaozhaocheju"])) {
                $result[] = $table_name;
                $sql = sprintf("TRUNCATE TABLE %s;", $table_name);
                \DB::select($sql);
                $sql = sprintf("alter table %s auto_increment=1;", $table_name);
                \DB::select($sql);

            }
        }

    }
    dd($result);

});