Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Pelbagai Pangkalan Data dalam Laravel?

Bagaimanakah Saya Boleh Menggunakan Pelbagai Pangkalan Data dalam Laravel?

Patricia Arquette
Lepaskan: 2024-12-21 20:10:56
asal
561 orang telah melayarinya

How Can I Use Multiple Databases in Laravel?

Menggunakan Berbilang Pangkalan Data dalam Laravel

Kepelbagaian Laravel meluas hingga mengendalikan berbilang pangkalan data secara serentak. Ikuti langkah ini untuk mencapai ini:

Menentukan Sambungan

Gunakan .env >= 5.0:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mysql_database
DB_USERNAME=root
DB_PASSWORD=secret

DB_CONNECTION_PGSQL=pgsql
DB_HOST_PGSQL=127.0.0.1
DB_PORT_PGSQL=5432
DB_DATABASE_PGSQL=pgsql_database
DB_USERNAME_PGSQL=root
DB_PASSWORD_PGSQL=secret
Salin selepas log masuk

Dalam config/database.php :

'mysql' => [
    'driver' => env('DB_CONNECTION'),
    'host' => env('DB_HOST'),
    'port' => env('DB_PORT'),
    'database' => env('DB_DATABASE'),
    'username' => env('DB_USERNAME'),
    'password' => env('DB_PASSWORD'),
],

'pgsql' => [
    'driver' => env('DB_CONNECTION_PGSQL'),
    'host' => env('DB_HOST_PGSQL'),
    'port' => env('DB_PORT_PGSQL'),
    'database' => env('DB_DATABASE_PGSQL'),
    'username' => env('DB_USERNAME_PGSQL'),
    'password' => env('DB_PASSWORD_PGSQL'),
],
Salin selepas log masuk

Tanpa .env <= 4.0:

Dalam app/config/database.php:

return array(
    'default' => 'mysql',
    'connections' => array(
        # Primary/Default database connection
        'mysql' => array(
            'driver' => 'mysql',
            'host' => '127.0.0.1',
            'database' => 'mysql_database',
            'username' => 'root',
            'password' => 'secret'
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
        ),

        # Secondary database connection
       'pgsql' => [
            'driver' => 'pgsql',
            'host' => 'localhost',
            'port' => '5432',
            'database' => 'pgsql_database',
            'username' => 'root',
            'password' => 'secret',
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
        ]
    ),
);</p>
<p><strong>Skema / Migrasi</strong></p>
<p>Tentukan sambungan menggunakan kaedah connection() :</p>
<pre class="brush:php;toolbar:false">Schema::connection('pgsql')->create('some_table', function($table)
{
    $table->increments('id'):
});
Salin selepas log masuk

Atau, tentukan sambungan di atas:

protected $connection = 'pgsql';
Salin selepas log masuk

Pembina Pertanyaan

$users = DB::connection('pgsql')->select(...);
Salin selepas log masuk

Model

(Laravel >= 5.0)

Tetapkan pembolehubah $connection dalam anda model:

class ModelName extends Model { // extend changed

    protected $connection = 'pgsql';

}
Salin selepas log masuk

(Laravel <= 4.0)

class SomeModel extends Eloquent {
    protected $connection = 'pgsql';
}
Salin selepas log masuk

Fasih

Transaksi Mod

DB::transaction(function () {
    DB::connection('mysql')->table('users')->update(['name' => 'John']);
    DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']);
});</p>
<p>atau</p>
<pre class="brush:php;toolbar:false">DB::connection('mysql')->beginTransaction();
try {
    DB::connection('mysql')->table('users')->update(['name' => 'John']);
    DB::connection('pgsql')->beginTransaction();
    DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']);
    DB::connection('pgsql')->commit();
    DB::connection('mysql')->commit();
} catch (\Exception $e) {
    DB::connection('mysql')->rollBack();
    DB::connection('pgsql')->rollBack();
    throw $e;
}
Salin selepas log masuk

Anda juga boleh menentukan sambungan pada masa jalan:

class SomeController extends BaseController {
    public function someMethod()
    {
        $someModel = new SomeModel;
        $someModel->setConnection('pgsql'); // non-static method
        $something = $someModel->find(1);
        $something = SomeModel::on('pgsql')->find(1); // static method
        return $something;
    }
}
Salin selepas log masuk

Pertimbangan Hubungan

Mewujudkan perhubungan merentas pangkalan data adalah mungkin tetapi memerlukan pengendalian yang teliti. Ia bergantung pada pangkalan data dan tetapan khusus yang digunakan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pelbagai Pangkalan Data dalam Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan