Symfony複数のデータベースを接続できます。これを達成するには、btトレーニングを行う必要があります。
ステップ#1
はparameters.yml
ファイルにパラメータを追加します。
Parameters:
# First database
database_host: 127.0.0.1
database_port: null
database_name: qmsfumgabd
database_user: qmsfumgabd
database_password: xxx9bxxMxx
# Second database
database2_host: 127.0.0.1
database2_port: null
database2_name: huscqxzwaw
database2_user: huscqxzwaw
database2_password: dxxxFXxxxB
ステップ#2
は、次のステップは、config.yml
でこれらの資格情報を取得することである:
doctrine:
# Configure the abstraction layer
dbal:
# Set the default connection to default
default_connection: default
connections:
default:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: UTF8
database2:
driver: pdo_mysql
host: '%database2_host%'
port: '%database2_port%'
dbname: '%database2_name%'
user: '%database2_user%'
password: '%database2_password%'
charset: UTF8
ステップ#3
第二のデータベース接続は、以下のパラメータを使用して追加することができます
最後に、プロジェクト内の各バンドルのマッピングを指定します。
# Configure the ORM
orm:
default_entity_manager: default
entity_managers:
# Register which bundle should use which connection
default:
connection: default
mappings:
AppBundle: ~
DemoBundle: ~
database2:
connection: database2
mappings:
CloudwaysBundle: ~
ステップ#4
今単にエンティティマネージャの使用の接続名のいずれかを呼び出すために:
class UserController extends Controller
{
public function indexAction()
{
// All 3 return the "default" entity manager
$em = $this->getDoctrine()->getManager();
$em = $this->getDoctrine()->getManager('default');
$em = $this->get('doctrine.orm.default_entity_manager');
// Both of these return the "database2" entity manager
$anotherEm = $this->getDoctrine()->getManager('database2');
$anotherEm = $this->get('doctrine.orm.database2_entity_manager');
}
}
をまたmultiple databasesのためのsymfonyのドキュメントからの助けを取ることができます。
まず、「シンプルなPHPファイル」はどういう意味ですか、私はSymfony(2と3)の方法論では「単純なPHPファイル」の使用を許可していないと思います。 –
PHPクラスがコントローラとして宣言していないことを意味します。@FabriceKabongo –
サービスの設定と依存性注入を見てください。 – Rufinus