如何使用 Database: Seeding 将数据从一个 table 导入到另一个 table? (laravel 5.3)?

How to import data from one table to another table using Database: Seeding? (laravel 5.3)?

我的 DatabaseSeeder 是这样的:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        Model::unguard();

        $this->call('MasterLookupsTableSeeder')
    }
}

我的 MasterLookupsTableSeeder 是这样的:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class MasterLookupsTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('master_lookups')->insert([
            'id'            =>  '17',           
            'code'          =>  '002',
            'name'          =>  'sample data',
            'information'   =>  NULL,
            'created_at'    =>  date('Y-m-d H:i:s'),
            'updated_at'    =>  date('Y-m-d H:i:s')
        ]);
    }
}

当我运行php artisan db:seed --class=MasterLookupsTableSeeder时,它会插入到tablemaster_lookups。它仍然是静态的。我想创建一个动态,其中数据被插入到 master_lookups table 中,取自另一个 table,例如 akuns table。 akuns table 有字段 ID、代码、名称 code_shopping。

我想要这样:

来自 akuns 的代码数据 table 插入字段代码 table master_lookups

来自 akuns 的名称数据 table 插入到 table 中的字段名称 master_lookups

code_shopping来自akuns的数据table以json的形式插入tablemaster_lookups中的字段信息。字段信息的数据类型为json.

有没有人可以帮助我?

让我们假设您的 akun table 附有模型 Akun。 我们对 master_lookups (MasterLookup) 假设同样的事情。

您可以尝试类似的方法:

Akun::all()->each(function($akun) { 
    $masterLookup = new MasterLookup; 
    $masterLookup->code = $akun->code;
    $masterLookup->name = $akun->name;
    $masterLookup->save()
}

根据您拥有的行数,您可能希望使用 chunk 方法而不是 all 来避免 运行 在尝试获取所有项目时内存不足.