ホームページ > PHPフレームワーク > Laravel > Laravel が複数のデータベースを使用する方法の詳細な説明 (コード例付き)

Laravel が複数のデータベースを使用する方法の詳細な説明 (コード例付き)

藏色散人
リリース: 2021-10-29 15:04:42
転載
2562 人が閲覧しました

Laravelの次のチュートリアルコラムでは、Laravelで複数のデータベースを利用する方法をご紹介しますので、お役に立てれば幸いです。

.env >= 5.0 を使用します (5.5 Laravel 8 に基づいてテストされており、利用可能です)

.env ファイル

DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=database1DB_USERNAME=rootDB_PASSWORD=secretDB_CONNECTION_SECOND=mysqlDB_HOST_SECOND=127.0.0.1DB_PORT_SECOND=3306DB_DATABASE_SECOND=database2DB_USERNAME_SECOND=rootDB_PASSWORD_SECOND=secret
ログイン後にコピー

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'),],'mysql2' => [
    'driver'    => env('DB_CONNECTION_SECOND'),
    'host'      => env('DB_HOST_SECOND'),
    'port'      => env('DB_PORT_SECOND'),
    'database'  => env('DB_DATABASE_SECOND'),
    'username'  => env('DB_USERNAME_SECOND'),
    'password'  => env('DB_PASSWORD_SECOND'),],
ログイン後にコピー

注意: mysql2 では、db_usernamedb_password が同じである場合、env('DB_USERNAME') を使用できます。


Mode

使用する接続を指定するには、

connection() メソッド

Schema::connection('mysql2')->create('some_table', function($table){
    $table->increments('id'):});
ログイン後にコピー
# を使用するだけです。 ##クエリ プロデューサー

$users = DB::connection('mysql2')->select(...);
ログイン後にコピー

モデル

モデルに

$connection

変数を設定します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">class SomeModel extends Eloquent {     protected $connection = 'mysql2';}</pre><div class="contentsignin">ログイン後にコピー</div></div>

setConnection

メソッドまたは on 静的メソッドを使用して実行時に接続を定義することもできます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">class SomeController extends BaseController {     public function someMethod()     {         $someModel = new SomeModel;         $someModel-&gt;setConnection('mysql2'); // non-static method         $something = $someModel-&gt;find(1);         $something = SomeModel::on('mysql2')-&gt;find(1); // static method         return $something;     }}</pre><div class="contentsignin">ログイン後にコピー</div></div>

複数のデータベースにまたがるテーブルとの関係を確立しようとするときは注意してください。これは使用できますが、データベースとデータベースの設定によってはいくつかの注意事項が伴う場合があります。


Laravel Docs より

複数のデータベース接続の使用

複数の接続を使用する場合、次のことができます。

DB ファサード クラスの接続メソッドを通じて各接続にアクセスします。 connection メソッドに渡される名前は、config/database.php 構成ファイルにリストされている接続に対応する必要があります:

$users = DB::connection('foo')->select(...);
ログイン後にコピー
接続インスタンスの

getPdo

メソッドを使用して、元の基になる PDO インスタンスにアクセスすることもできます:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$pdo = DB::connection()-&gt;getPdo();</pre><div class="contentsignin">ログイン後にコピー</div></div>

元のアドレス: https://stackoverflow.com/questions / 31847054/how-to-use-multiple-databases-in-laravel

翻訳アドレス: https://learnku.com/laravel/t/62110

以上がLaravel が複数のデータベースを使用する方法の詳細な説明 (コード例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート