Blog Yazılarım

Laravel Veritabanı Taşıma İşlemi Nasıl Yapılır ?

Laravel Veritabanı Taşıma İşlemi Nasıl Yapılır ?


Merhaba arkadaşlar bu yazıda veri tabanlarızdaki verileri nasıl başka bir veri tabanına taşıyacağımızı öğreneceğiz

Öncelikle mysql bağlantısını database/config.phpdosyanıza kopyalayın ve altına yapıştırın, ardından bağlantı adlarını aşağıdaki gibi düzenleyin

'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],

'mysql-transfer' => [
'driver' => 'mysql',
'host' => env('DB_TRANSFER_HOST', '127.0.0.1'),
'port' => env('DB_TRANSFER_PORT', '3306'),
'database' => env('DB_TRANSFER_DATABASE', 'forge'),
'username' => env('DB_TRANSFER_USERNAME', 'forge'),
'password' => env('DB_TRANSFER_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],

Sonra .env’nize dosyanızı açın ve database bağlantısını aşağıdaki gibi yapılandırın

DB_CONNECTION=mysql-transfer

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database1
DB_USERNAME=root
DB_PASSWORD=

DB_TRANSFER_HOST=127.0.0.1
DB_TRANSFER_PORT=3306
DB_TRANSFER_DATABASE=database2
DB_TRANSFER_USERNAME=root
DB_TRANSFER_PASSWORD=

Şimdi Seeds klasörünüze yeni bir seeder ekleyelim.

php artisan make:seed TransferSeeder

Şimdi bu dosyayı açalım ve çalışma işlevine aşağıdakileri ekleyelim. table_name, yazan yere ise verilerinizi taşıyacağınız tablonun adını yazın

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class TransferSeeder extends Seeder
{
/**
* Run the database seeds.
*
*
@return void
*/
public function run()
{
// burada veri tabanı bağlanıyoruz
$database = DB::connection('mysql');
// burada ise taşıyacağımız verileri alıyoruz
// not : blog yazan yere taşıyacağımız verilerin tablosunu yazıyoruz
foreach ($database->table('blog')->get() as $data) {
// Buradada table_name yazan yere taşıyacağımız tablonun ismini yazıyoruz

DB::table('table_name')->insert((array) $data);
}

foreach ($database->table('blog')->get() as $data) {
// Buradada table_name yazan yere taşıyacağımız tablonun ismini yazıyoruz

DB::table('table_name')->insert((array) $data);
}
}
}

İşiniz bittiğinde, aşağıdaki kodu DatabaseSeeder.php dosyanıza eklemeniz yeterlidir.

public function run()
{
$this->call(TransferSeeder::class);
}

Yukarıdaki kodu ekledikten sonra bu komutu çalıştırın

php artisan migrate:fresh --seed

Not: Taşıyacağınız tablodaki alanlar ile diğer tablodaki alanlar aynı olmaz ise bu php artisan migrate:fresh --seed çalıştırdığınız komut da hata alırsınız.

Ama iki tablo arasındaki alanlar farklı olacaksa TransferSeeder.php dosyamızı açıyoruz ve aşağıdaki şekilde düzeltiyoruz.

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class TransferSeeder extends Seeder
{
/**
* Run the database seeds.
*
*
@return void
*/
public function run()
{
// burada veri tabanı bağlanıyoruz
$database = DB::connection('mysql');
// burada ise taşıyacağımız verileri alıyoruz
// not : blog yazan yere taşıyacağımız verilerin tablosunu yazıyoruz
foreach ($database->table('blog')->get() as $data) {
// Buradada table_name yazan yere taşıyacağımız tablonun ismini yazıyoruz ve taşıyacağımız tablonun alanlarını aşağıdaki şekilde düzenliyoruz ve $data değişkeninden gelen verileri onlara aktarıyoruz

DB::table('table_name')->insert((array) [
'id' => $data->id,
'title' => $data->baslik,
'content' => $data->icerik,
]);
}

foreach ($database->table('blog')->get() as $data) {
// Buradada table_name yazan yere taşıyacağımız tablonun ismini yazıyoruz ve taşıyacağımız tablonun alanlarını aşağıdaki şekilde düzenliyoruz ve $data değişkeninden gelen verileri onlara aktarıyoruz

DB::table('table_name')->insert((array) [
'id' => $data->id,
'title' => $data->baslik,
'content' => $data->icerik,
]);
}
}
}

Bu şekilde düzelttik’ten sonra aşağıdaki kodu çalıştırıyoruz ve tüm verilerimiz o tabloya taşınmış oluyor

php artisan migrate:fresh --seed



Bu yazıyı paylaş


Yorumlar (0)

Yorum Yap