私は複数の接続があり、私はリポジトリクラスを持っています。リポジトリクラスが複数の接続にアクセスできるようにしたいと思います。これは、複数のデータベースホストからデータを取得する必要があるレポートです。symfony2 - リポジトリまたはクラスで複数の接続を使用する
config.yml
doctrine:
dbal:
default_connection: default
connections:
default:
driver: "%db_default_driver%"
host: "%db_default_host%"
etc..
bookings:
driver: "%db_readonly_bookings_driver%"
host: "%db_readonly_bookings_host%"
etc ...
sessions:
etc..
SalesJournalRepistory.php
namespace Portal\SalesJournalBundle\Repository;
use Doctrine\ORM\EntityRepository;
class SalesJournalRepository extends EntityRepository
{
public $connDefault = null;
public $connBookings = null;
public $connSessions = null;
function __construct()
{
// this is where I get the error
$this->connDefault = $this->getManager('default')->getConnection();
$this->connBookings = $this->getManager('bookings')->getConnection();
$this->connSessions = $this->getManager('sessions')->getConnection();
}
function testQuery(){
$sql = "SELECT * FROM testTableBookings LIMIT 10";
$stmt = $this->connBookings->prepare($sql);
$results = $stmt->fetchAll();
print_r($results);
}
function testQuery2(){
$sql = "SELECT * FROM testTableSessions LIMIT 10";
$stmt = $this->connSessions->prepare($sql);
$results = $stmt->fetchAll();
print_r($results);
}
}
私はそれがコントローラから動作させることができます
$connDefault = $this->getDoctrine()->getManager('default')->getConnection();
$connBookings = $this->getDoctrine()->getManager('bookings')->getConnection();
ができるようにするために探してイムそれを実行するリポジトリから。次のエラーが発生しました
PHP Fatal error: Call to a member function getConnection() on a non-object
これは手がかりを与えるかもしれないと思いましたか? enjecting entitiesしかし、私はちょっと混乱していて、それがわからないのですか?
- ありがとう。私はかなり長い間これに固執してきました。私はリポジトリフォルダに保管しましたが、拡張EntityRepositoryを使用しませんでした。私はそのサービスが単なるレポートであるとは思っていません。そして、私は、クエリがリポジトリフォルダに属していると言っています。あなたはその設定についてどう思いますか? –
@Robbo_UKあなたはどこにでもあなたのサービスを置くことができます - しかし、私はリポジトリフォルダがリポジトリ用であることを示唆しています...その新しいフォルダを作成するOK – ManseUK