自分でウェブアプリケーションを作る場合、フロントエンドにVueを使用し、サーバ側は素のPHPでRestful風に仕上げるスタイルが好みです。
サーバーの仕事は、要求に応じてjsonデータを返すことが主な役割になりますので、LaravelやRailsなどの巨大なフレームワークは無用の長物となるのですが、認証やDBまわりだけフレームワークの機能を使いたいなと思うことはないでしょうか?
実は、Laravelの認証やDBの機能は単体で使用することができます。
今回、DBを扱うにあたり、illuminate/database を使うことにしました。
(※認証系でしたら、sentinelやsentry2あたりを使います。)
インストールの方法については、他のライブラリ同様にcomposerで導入できます。
さて、その使い方ですが、illuminate/database単体で使用する方法をググって調べたのですが、あまり情報は多くないようです。今回は複数のDBに接続したいのですが、そういった情報はなかなか見つかりませんでした。Laravelでの接続方法はいくつかありましたので、illuminate/database単体でもきっと出来るはずです。
結局、 illuminate/database のGithubにあるソースコードを読んで、複数のDBへ接続して使用する方法を調べました。
以下のように指定すればOKでした。
<?php
use Illuminate\Database\Capsule\Manager as Capsule;
include_once('vendor/autoload.php');
// database manager を生成する
$capsule = new Capsule;
// DB1の接続情報を設定する
$capsule->addConnection([
'driver' => 'mysql',
'host' => 'xxxxx',
'database' => 'xxxxx',
'username' => 'xxx',
'password' => 'xxxxxx',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci'
]);
// DB2の接続情報を設定する
$capsule->addConnection([
'driver' => 'mysql',
'host' => 'xxxxx',
'database' => 'xxxxx',
'username' => 'xxx',
'password' => 'xxxxxx',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci'
], 'second_db'); // <============ ★名前を付ける!
// 標準では"default"という名称になる
$capsule->setAsGlobal();
$capsule->bootEloquent();
// それぞれのDBに接続する
$db1 = $capsule->connection();
// connection('default')でもOK
$db2 = $capsule->connection('second_db');
// DB1からデータを取得する
$rec1 = $db1->table('users')->get();
// DB2のデータを更新する
$db2->table('users')
->where('id', 1)
->update(['first_name' => 'taro']);
なかなか便利です。
ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。 20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。 プログラミングの経験は30年以上。HTML、CSS、JavaScript、TypeScript、Vue、NuxtJS、Node.js、MySQL、MongoDB、Elasticsearch、WordPress、PHP、Docker、Electronなど、幅広く対応します。
コメント