Ich versuche Doctrine DBAL in meinem Symfony-Web-Projekt zu verwenden.Php Symfony 3.1 Ausnahme mit Doctrine DBAL
Was ich getan habe:
config.yml
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_pgsql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
parameters.yml
parameters:
database_host: 127.0.0.1
database_port: 5432
database_name: my_project_db
database_user: postgres
database_password: my_password
Mein Controller für Firmenprofil
/**
* @Route("/profile/{userId}/{sessionKey}", name="profile")
*/
public function profileAction($userId=null, $sessionKey=null)
{
$securityController = new SecurityController();
$securityController->userId = $userId;
$securityController->sessionKey = $sessionKey;
if ($securityController->sessionKeyIsValid())
{
return new Response('Profile');
}
else
{
return $this->redirectToRoute('login');
}
}
Und mein securityController wher e Ich versuche, meine PostreSQL
class SecurityController extends Controller
{
public $userId;
public $sessionKey;
public function sessionKeyIsValid()
{
$conn = $this->get('database_connection');
//$conn->fetchAll('select * from main.users;');
return false;
}
}
Exception (Error: Call to a member function get() on null
) erscheint auf dieser Zeichenfolge Code $conn = $this->get('database_connection');
zu verbinden Was mache ich falsch? Es scheint, dass ich Schritt für Schritt gefolgt bin, wie es in Symfony empfohlen wird. Cookbook http://symfony.com/doc/current/cookbook/doctrine/dbal.html
Vielen Dank für die ausführliche Antwort, aber ich bin nicht so weit gekommen, wie Serviceargument (Argumente: ["@database_connection"]) mit Datenbankverbindungsparameter in meiner Parameter.yml Datei zu verknüpfen. Wenn ich Ihr Beispiel "so wie es ist" nehme, bekomme ich einen Fehler (kann nicht in Zeile 15 (in der Nähe von "arguments: [" @database_connection "]").) –
Es gab einen nicht gewünschten Platz in meiner vorherigen Antwort, ich habe es behoben. Die Syntax '" @database_connection "' bedeutet, dass der Dienst 'database_connection' durch den Konstruktor injiziert wird. Es wurde bereits instanziiert, siehe Abschnitt "config.yml" neben "doctrine". Ihre Datenbankparameter sind bereits registriert. Sie sollten wirklich die Abschnitte der Dokumentation lesen, die Sie interessieren. Symfony ist ein sehr leistungsfähiges Werkzeug, aber es ist eindeutig kontraproduktiv, wenn es nicht angemessen verwendet wird. – marc
Danke, das Problem wurde gelöst, indem Sie zusätzlichen Speicherplatz wie erwähnt entfernen. Ich wusste nicht, dass Yml Config so von der Formatierung abhängt. –