2016-12-27 4 views
3

Мой DatabaseSeeder как это:Как импортировать данные из одной таблицы в другую таблицу, используя Database: Seeding? (laravel 5.3)?

<?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 table. В таблице akuns есть идентификатор поля, код, имя, код_shopping.

Я хочу так:

код данных из akuns таблицы вставки в код поля в таблицах master_lookups

данные имени из таблицы akuns вставки на имя поля в таблице master_lookups

code_shopping данных из таблицы akuns вставьте информацию о поле в таблицу master_lookups в виде json. Тип данных данных поля - json.

Есть ли люди, которые могут мне помочь?

+0

Просто возьмите все предметы из таблицы akuns и перевернитесь, сделав вставку на целевой таблице в качестве тела закрытия? Akun :: all() -> each (function ($ akun) {$ masterLookup = новый MasterLookup; $ masterLookup-> code = $ akun-> code; etc $ masterLookup-> save()} В зависимости от количества строк у вас есть в вашей таблице, вы можете захотеть использовать кусок вместо всех, чтобы убедиться, что у вас не закончится память. –

ответ

1

Предположим, что ваш стол akun имеет прикрепленную модель Akun. Мы принимаем то же самое для master_lookups (MasterLookup).

Вы можете попробовать что-то вроде:

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

В зависимости от количества строк у вас есть, вы можете использовать chunk метод вместо all, чтобы избежать запуска из памяти при попытке захватить все пункты ,

+0

кажется лучше использовать foreach, чем каждый –

+0

Почему? Пользуясь преимуществами коллекций Laravel, я думаю. уверен, что они одинаковы под капотом. –

Смежные вопросы