Hi easy, vielen Dank für deine Antwort.
Da sich die Queries später kaum ändern, muss ich im Backend eigentlich keine Möglichkeit für Editierungen haben. Vor allem klingt eine Datenbankabfrage für eine Datenbankabfrage nicht unbedingt optimal
Was hältst du aber von folgender Lösung:
Zusammenhängende Abfragen (z.B. alle Abfragen betreffend Dateidownloads) werden in ein entsprechendes Model ausgelagert. Im Modul wird dann dieses Model importiert und die gewünschten Methoden aufgerufen.
PHP-Code:
// FILE: DownloadModel.php
class DownloadModel extends Model
{
/**
* Connect to crm database
*/
public function connect()
{
$this->Database->setDatabase($GLOBALS['TL_CONFIG']['crmDbDatabase']);
$this->Database->execute("SET NAMES 'utf8'");
}
/**
* Disconnect from crm database
*/
public function disconnect()
{
$this->Database->setDatabase($GLOBALS['TL_CONFIG']['dbDatabase']);
$this->Database->execute("SET NAMES 'utf8'");
}
/**
* Sample method
*/
public function getProducts($params)
{
$sql = "SQL";
return $this->Database->execute($sql);
}
}
PHP-Code:
// FILE: Module Sample
// Import model
$this->import('DownloadModel');
// Switch database to crm
$this->DownloadModel->connect();
// Sample query
$objResult = $this->DownloadModel->getProducts($params);
// Switch database back to contao
$this->DownloadModel->disconnect();
print_r($objResult);
Mit dem Wechseln der Datenbank bin ich allerdings noch nicht zufrieden. Muss nämlich jedes mal geschehen, wenn ich vom CRM was hole und wieder zurück, wenn ich dann wieder was von der Contao Datenbank brauche.
Eine Möglichkeit wäre ein Wrapper, der automatisch die Datenbank wechselt, die Methode ausführt undwieder zurück wechselt. Allerdings hätte ich damit - wenn ich mehrere CRM Abfragen hintereinander habe - sinnlose Wechsel dabei.
Hat da vielleicht jemand eine Idee?
Lesezeichen