【问题标题】:Laravel database seeding from old tablesLaravel 数据库从旧表中播种
【发布时间】:2015-07-01 13:21:17
【问题描述】:

如何使用 laravel 从旧数据库表中的数据填充新表?两个数据库具有不同的结构。是否可以使用 Laravel 播种?

【问题讨论】:

    标签: php database laravel laravel-5 laravel-5.1


    【解决方案1】:

    你可以在 laravel 中使用multiple database connections 来连接两个数据库。

    config/database.php

    return [
        'connections' => [
            'old_db' => [
                'driver'    => 'mysql',
                'host'      => env('DB_HOST_OLD'),
                'database'  => env('DB_DATABASE_OLD'),
                'username'  => env('DB_USERNAME_OLD'),
                'password'  => env('DB_PASSWORD_OLD'),
            ],
            'new_db' => [
                'driver'    => 'mysql',
                'host'      => env('DB_HOST'),
                'database'  => env('DB_DATABASE'),
                'username'  => env('DB_USERNAME'),
                'password'  => env('DB_PASSWORD'),
            ],
        ],
    ];
    

    然后在您的种子文件中,您可以连接到旧数据库并循环访问这些项目并将它们插入到新数据库中

    UserTableSeeder.php

    $users = DB::connection('old_db')->table('users')->get();
    
    foreach($users as $user){
        DB::connection('new_db')->table('users')->insert([
            'name' => $user->username, //different fieldnames
            'email' => $user->emailaddress, //different fieldnames
        ]);  
    }
    

    【讨论】:

      【解决方案2】:

      如果我是你并且我需要 FAST 一次性 解决方案,我会:

      使用 DB 外观从旧表中获取数据:

       $rows = DB::table('users')->get();    
      

      构建我的 foreach 东西,它在数据库播种器中工作并回显它:

      foreach ($rows as $row) {
        echo("DB::table('table')->insert(array(
          'name' => '$row->name',
          'email' => '$row->email'
        ));
        <br />");
      }
      

      将其复制并粘贴到数据库播种器中并运行它下面的结构语句直接在 MySQL 中工作并在 MySQL 中运行。它看起来很愚蠢,但速度非常快并且有效。

      上面的代码行未经测试,是从内存中编写的。

      【讨论】:

        猜你喜欢
        • 2015-09-25
        • 1970-01-01
        • 2015-05-27
        • 2016-02-10
        • 1970-01-01
        • 2018-05-20
        • 2014-03-01
        • 2016-02-13
        相关资源
        最近更新 更多