Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在laravel中获取所有模型/迁移名称并添加单个新列_Mysql_Laravel 5_Laravel Migrations_Artisan Migrate - Fatal编程技术网

Mysql 如何在laravel中获取所有模型/迁移名称并添加单个新列

Mysql 如何在laravel中获取所有模型/迁移名称并添加单个新列,mysql,laravel-5,laravel-migrations,artisan-migrate,Mysql,Laravel 5,Laravel Migrations,Artisan Migrate,我在数据库中有88个表,每个表中需要一个新列一个解决方案是我进行迁移,为所有表编写88个函数来添加新列,以及88个函数来删除该列 有没有办法在一个变量中获取所有表名,然后使用foreach通过一段代码添加一个新列 获取变量中的所有表名 通过foreach循环将新列添加到该特定变量 但是怎么做呢? 我想在所有表中添加team_id,但我需要一个最佳解决方案 我正在使用laravel 5.4版本。请尝试以下操作 // Get the default database name $dbName =

我在数据库中有88个表,每个表中需要一个新列一个解决方案是我进行迁移,为所有表编写88个函数来添加新列,以及88个函数来删除该列

有没有办法在一个变量中获取所有表名,然后使用
foreach
通过一段代码添加一个新列

  • 获取变量中的所有表名

  • 通过
    foreach
    循环将新列添加到该特定变量

  • 但是怎么做呢? 我想在所有表中添加
    team_id
    ,但我需要一个最佳解决方案

    我正在使用laravel 5.4版本。

    请尝试以下操作

    // Get the default database name
    $dbName = config('database.connections.' . config('database.default') . '.database');
    
    $tables = DB::select('SHOW TABLES');
    
    foreach($tables as $table)
    {
        Schema::table($table->{'Tables_in_' . $dbName}, function($table) {
            // Add the column
            $table->string('some_column');
        });
    }
    

    要了解发生了什么,请分析$tables变量,但应该非常简单。

    我已经尝试过这个方法,它也很有效,但比那个更好,@Artur

    class AddTeamIdToNecessaryTables extends Migration
    {
        protected $table_names;
    
        function __construct()
        {
            $this->table_names = [
                'accounts', 'suppliers', 'expenses', 'draft_invoices', 'quote_jobs',
                'committed_invoices', 'quotes', 'rate_plans', 'call_categories',
                'prefix_groups', 'draft_items', 'committed_invoice_cdrs', 'committed_items',
                'call_data_records', 'committed_temp_xero_infos', 'did_records',
                'prefixes', 'prefix_cost_prices', 'purchase_items', 'purchase_orders',
                'quote_costs', 'sippy_root_accounts', 'temp_xero_infos', 'sippy_infos', 'committed_jobs'
            ];
        }
    
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            \DB::beginTransaction();
            try {
                foreach ($this->table_names as $table_name) {
                    Schema::table($table_name, function (Blueprint $table) {
                        $table->integer('team_id')->unsigned()->nullable()->after('id');
                        $table->foreign('team_id')->references('id')->on('teams');
                    });
                }
                \DB::commit();
            } catch (\Exception $e) {
                \DB::rollback();
            }
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            \DB::beginTransaction();
            try {
                foreach ($this->table_names as $table_name){
                    Schema::table($table_name, function (Blueprint $table) {
                        $table->dropForeign(['team_id']);
                        $table->dropColumn('team_id');
                    });
                }
                \DB::commit();
            } catch (\Exception $e) {
                \DB::rollback();
            }
        }
    }
    

    太好了对我来说太好了谢谢你的回应爱你
    class AddTeamIdToNecessaryTables extends Migration
    {
        protected $table_names;
    
        function __construct()
        {
            $this->table_names = [
                'accounts', 'suppliers', 'expenses', 'draft_invoices', 'quote_jobs',
                'committed_invoices', 'quotes', 'rate_plans', 'call_categories',
                'prefix_groups', 'draft_items', 'committed_invoice_cdrs', 'committed_items',
                'call_data_records', 'committed_temp_xero_infos', 'did_records',
                'prefixes', 'prefix_cost_prices', 'purchase_items', 'purchase_orders',
                'quote_costs', 'sippy_root_accounts', 'temp_xero_infos', 'sippy_infos', 'committed_jobs'
            ];
        }
    
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            \DB::beginTransaction();
            try {
                foreach ($this->table_names as $table_name) {
                    Schema::table($table_name, function (Blueprint $table) {
                        $table->integer('team_id')->unsigned()->nullable()->after('id');
                        $table->foreign('team_id')->references('id')->on('teams');
                    });
                }
                \DB::commit();
            } catch (\Exception $e) {
                \DB::rollback();
            }
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            \DB::beginTransaction();
            try {
                foreach ($this->table_names as $table_name){
                    Schema::table($table_name, function (Blueprint $table) {
                        $table->dropForeign(['team_id']);
                        $table->dropColumn('team_id');
                    });
                }
                \DB::commit();
            } catch (\Exception $e) {
                \DB::rollback();
            }
        }
    }