2016-09-30 2 views
1

Ich versuche, meine Lehre Kommandozeilen-Tool arbeitet in Symfony 2 Projekt auf Windows 7 und ich erhalte die gleiche Fehlermeldung in der Konsole zu erhalten:Symfony 2 Lehre 2 EntityManager Config

Fatal error: Call to protected Doctrine\ORM\EntityManager::__construct() 
from invalid context in C:\wamp\www\firstSymfonyApp\cli-config.php on line 9 

Call Stack: 
0.0010  239440 1. {main}() C:\wamp\www\firstSymfonyApp\vendor\doctrine\orm\bin\doctrine.php:0 
0.0090  621376 2. require('C:\wamp\www\firstSymfonyApp\cli-config.php') C:\wamp\www\firstSymfonyApp\vendor\doctrine\orm\bin\doctrine.php:48 

-Code meines Klima config.php:

<?php 
use Doctrine\ORM\Tools\Console\ConsoleRunner; 
require_once 'app/bootstrap.php.cache'; 
$em = new \Doctrine\ORM\EntityManager(); 
return ConsoleRunner::createHelperSet($em); 

Bis heute war ich nur unter Linux mit Lehre, wo war die Installation viel einfacher, bitte helfen Sie mir dies funktioniert.

+0

ich ziemlich zuversichtlich bin der Code, den Sie oben gepostet arbeitete auch nicht auf Linux. Folgen Sie diesem: http://docs.doctrine-project.org/en/latest/tutorials/getting-started.html und verwenden Sie $ entityManager = EntityManager :: create ($ conn, $ config); – Cerad

Antwort

0

Fehlermeldung ist sehr klar. EntityManager::__construct ist protected Methode daher können Sie es nicht außerhalb der Klasse verwenden.

Auschecken EntityManager::create.

prüft this link für weitere Informationen darüber, wie mit Lehre 2.

Dies ist wahrscheinlich das Snippet beginnen, die Sie jetzt richtig wichtig sein sollten:

<?php 
// bootstrap.php 
require_once "vendor/autoload.php"; 

use Doctrine\ORM\Tools\Setup; 
use Doctrine\ORM\EntityManager; 

$paths = array("/path/to/entity-files"); 
$isDevMode = false; 

// the connection configuration 
$dbParams = array(
    'driver' => 'pdo_mysql', 
    'user'  => 'root', 
    'password' => '', 
    'dbname' => 'foo', 
); 

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode); 
$entityManager = EntityManager::create($dbParams, $config); 
+0

Ich habe diesen Code bereits in meiner Bootstrap-Datei verwendet, das einzige, was falsch war, war $ em = new \ Doctrine \ ORM \ EntityManager(); anstelle von $ em = $ entityManager; in meiner cli-config-Datei. Jedenfalls danke Mann. Noch eine blöde Frage: In welcher Datei boostrap.php sollte ich den eingefügten Code speichern? Ich habe es in meiner bootstrap.php.cache Datei und es funktioniert, aber das ist wahrscheinlich falsch. –

+0

Eigentlich müssen Sie keinen EntityManager erstellen, wenn Sie Symfony verwenden. Es wird alles von Dienstleistungen erledigt. –