Ich habe mehrere Verbindungen und ich habe eine Repository-Klasse. Ich möchte, dass die Repository-Klasse Zugriff auf die mehreren Verbindungen hat. Dies ist für einen Bericht erforderlich, der das Abrufen von Daten von mehreren Datenbankhosts erfordert.symfony2 - mit mehreren Verbindungen in einem Repository oder Klasse
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);
}
}
Ich kann es aus dem einen Controller
$connDefault = $this->getDoctrine()->getManager('default')->getConnection();
$connBookings = $this->getDoctrine()->getManager('bookings')->getConnection();
aber im suchen funktioniert der Lage sein, um es auszuführen aus dem Repository. Ich bekomme den folgenden Fehler:
PHP Fatal error: Call to a member function getConnection() on a non-object
Ich dachte, das kann ein Hinweis geben? enjecting entities aber ich bin ein wenig verwirrt und nicht sicher, ob es ist?
yay hat funktioniert - danke. Ich bin seit einiger Zeit daran festgeklemmt. Ich habe es im Repository-Ordner aufbewahrt, aber nicht das extend-EntityRepository verwendet. Ich bin mir nicht sicher, ob es ein Dienst ist, da es nur ein Bericht ist, und ich habe gesagt, dass Abfragen in den Ordner Repository gehören. Was denkst du über dieses Setup? –
@Robbo_UK können Sie Ihre Dienste überall - aber ich würde vorschlagen, dass der Ordner Repositories für Repositories ist ... Es ist OK, neue Ordner zu erstellen – ManseUK