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

时间:2016-12-27 18:42:09

标签: php mysql json laravel 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时,它将插入到表master_lookups中。它仍然是静态的。我想创建一个动态,其中数据插入到从另一个表中获取的master_lookups表中,例如akuns表。 akuns表有字段id,代码,名称,code_shopping。

我想这样:

来自akuns表的代码数据插入到表master_lookups

中的字段代码中

将来自akuns表的数据插入表master_lookups

中的字段名称

来自akuns表的code_shopping数据以json的形式插入表master_lookups中的字段信息。字段信息的数据类型是json。

有没有人可以帮助我?

1 个答案:

答案 0 :(得分:1)

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

您可以尝试以下内容:

 @ 8   jdk.internal.misc.Unsafe::getAndAddInt (27 bytes)   (intrinsic)
 @ 3   jdk.internal.misc.Unsafe::getIntVolatile (0 bytes)   (intrinsic)
 @ 18  jdk.internal.misc.Unsafe::weakCompareAndSwapIntVolatile (11 bytes)   (intrinsic)
 @ 7   jdk.internal.misc.Unsafe::compareAndSwapInt (0 bytes)   (intrinsic)
 @ 8   jdk.internal.misc.Unsafe::getAndAddInt (27 bytes)   (intrinsic)

根据您拥有的行数,您可能希望使用Akun::all()->each(function($akun) { $masterLookup = new MasterLookup; $masterLookup->code = $akun->code; $masterLookup->name = $akun->name; $masterLookup->save() } 方法而不是chunk来避免在尝试抓取所有项目时内存不足。

相关问题