質問 > その他 > 複数のDBの出し分けの方法について 4.X系 |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ktm |
投稿日時: 2024/7/28 16:45
対応状況: −−−
|
新米 登録日: 2024/7/28 居住地: 投稿: 4 |
複数のDBの出し分けの方法について 4.X系 ▼
EC-CUBE : 4.1.2-p1 サーバーOS : Linux DBサーバー : MySQL 5.7.44 WEBサーバー: Apache/2.4.59 (Debian) PHP 7.4.33 ▼やりたいこと 複数のデータベースを利用してサイトごとにDBの参照先を変更したい サイトAとサイトBがありますが、 サイトBでは、ユーザー周りのテーブル関係(dtb_customerなど約10テーブルほど)はサイトAを参照するようにしたいです。 方法としては、 ▫️独自プラグインを作成(サイトB) 1. .envファイルにDBを追加
2. doctrine.yamlの修正
3. Plugin配下にEntity, Repositoryを継承して配置 ----------------------------- このようなやり方で実現しようと考えて開発中なのですが、 Entity, Repository内の多量のパスの修正やエラーの箇所も次々と出てくるので開発に難航しております。 もっと効率のいい方法でDBの出しわけを実施できる方法が知りたいです。 有識者の方、ご教授いただけましたら幸いです。 |
mcontact |
投稿日時: 2024/7/29 11:19
対応状況: −−−
|
神 登録日: 2022/1/22 居住地: 投稿: 1462 |
Re: 複数のDBの出し分けの方法について 4.X系 https://qiita.com/ma33588/items/fca931a585de65e78c99
|
ktm |
投稿日時: 2024/7/30 12:35
対応状況: −−−
|
新米 登録日: 2024/7/28 居住地: 投稿: 4 |
Re: 複数のDBの出し分けの方法について 4.X系 ご投稿ありがとうございます。
説明不足がありましたが、 今回の環境(STG, 本番)によってDB名が異なるため以下の静的にDB名を指定する方法では不可ということでした。
https://qiita.com/ma33588/items/fca931a585de65e78c99 上記の
このような方法ですと、本番環境でしか対応できず STG環境での対応やテストができないという問題がありました。 環境に応じても対応でき、4.X系での実装方法を検討しておりました。 |
ktm |
投稿日時: 2024/9/8 17:45
対応状況: −−−
|
新米 登録日: 2024/7/28 居住地: 投稿: 4 |
Re: 複数のDBの出し分けの方法について 4.X系 誰も答えられないですか
残念です |
red |
投稿日時: 2024/9/13 9:56
対応状況: −−−
|
神 登録日: 2010/2/15 居住地: 東京都 投稿: 1574 |
Re: 複数のDBの出し分けの方法について 4.X系 viewで対応するほうが楽そうですね
|
ktm |
投稿日時: 2024/9/14 15:55
対応状況: −−−
|
新米 登録日: 2024/7/28 居住地: 投稿: 4 |
Re: 複数のDBの出し分けの方法について 4.X系 ご回答、アドバイスのほど誠にありがとうございます。
viewですね、検討いたします。 ただ、上位の意向としてはyamlファイルでの設定、以下の公式の方法でを希望しておりますので、そちらの方で出来ればと思っております。 https://symfony.com/doc/4.x/doctrine/multiple_entity_managers.html 改めて現状をお話ししたいと思います --- EC-CUBE 4.1系で、複数のデータベースを利用し、エンティティごとにデータベースを切り替える要件があります。 特定のエンティティ(例えばCustomer)に対して、以下のようなデータベースの出し分けを行いたいです。 default(デフォルトデータベース) user(ユーザー周りのデータベース) この2つのデータベースをエンティティごとに使い分けることを目指しています。 これまで試した手順 1. 環境変数設定(.envファイル) まず、2つのデータベース接続情報を.envに設定します。
2. doctrine.yaml での設定 次に、doctrine.yamlファイルで2つのデータベースを定義し、それぞれのエンティティマネージャを設定します。
3. CustomerRepository.php でのDB切り替え CustomerRepositoryでは、データベース(default)とデータベース(user)を使い分けます。
4. services.yaml によるエンティティマネージャの設定 CustomerRepositoryで、defaultとuserエンティティマネージャを注入するようにservices.yamlを設定します。
現在の状況と問題点 このようになっておりますが、DBはデフォルトにしか向かない状況です(userに向いてほしい) しかし、実際にはすべての操作がdefault(dbname_02)データベースで行われているようで、userデータベースに対して正しく接続されていない状態です。 何か気付くことや、修正すべきことがあればご教授いただけましたら幸いです。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |