2015-01-09 2 views
0

У меня есть две таблицы, одна с первичным ключом, которая ссылается на столбец другой таблицы. Теперь мне нужно скопировать все первичные ключи во вторую таблицу.вставить данные из одной таблицы в другую с laravel eloquent

У меня есть эти две модели:

class Products extends Eloquent implements UserInterface, RemindableInterface { 

    use UserTrait, RemindableTrait; 


    protected $connection = 'mysql3'; 

    protected static $_table; 

    public function setTable($table) 
    { 
     static::$_table = $table; 
    } 

    public function getTable() 
    { 
     return static::$_table; 
    } 

    public function skuEAN() { 

     return $this->hasOne('SkutoEAN', 'seller_sku', 'seller_sku'); 


    } 

и

class SkutoEAN extends Eloquent implements UserInterface, RemindableInterface { 

    use UserTrait, RemindableTrait; 


    protected $connection = 'mysql3'; 

    protected static $_table; 

    public function setTable($table) 
    { 
     static::$_table = $table; 
    } 

    public function getTable() 
    { 
     return static::$_table; 
    } 

    protected $fillable = ['seller_sku','EAN','fallback']; 

    public function connectToproducts() { 

     return $this->belongsTo('de_products'); 

    } 

Теперь в мой контроллер, я делаю это:

$data = Products::get(['seller_sku']); 
    foreach ($data as $a) { 
     $skuean = SkutoEAN::create(['seller_sku' => $a->seller_sku]); 
     $skuean->save(); 
} 

Который работает, но занимает около 3 минуты, чтобы скопировать 2500 записей, что не может быть правильным. Есть ли способ скопировать данные напрямую с красноречивым, не сохраняя сначала данные в памяти?

ответ

3

Вы можете использовать только Eloquent::insert(). Например:

$data = array(
    array('name'=>'Coder 1', 'rep'=>'4096'), 
    array('name'=>'Coder 2', 'rep'=>'2048'), 
    //... 
); 

Coder::insert($data); 

Может this вопрос может помочь вам!

+0

Большое спасибо! – baao

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