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.php
dosyanı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);
}
}
}
İş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,
]);
}
}
}
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
Yorum Yap