1

Doctrine に触れたことがないので (1 または 2)、Doctrine 2 のこのチュートリアルに従っています。

コマンド ラインを使用してデータベース スキーマを生成するところまで来ました。チュートリアルに従って、これは cli-config.php ファイルです。

<?php
$cliConfig = new Doctrine\Common\Cli\Configuration();
$cliConfig->setAttribute('em', $entityManager);

ただし、実行すると、エラーが発生します。

Fatal error: require(): Failed opening required 'Doctrine\Common\Cli\Configuration.php' 

cli-config.php ファイルによって参照されるクラスが存在しないためです。また、cli-config.php ファイルを消去しようとしましたが、もちろんどちらも機能しません。「ヘルパー "em" が定義されていません」と表示されます。

バージョン 2.0.0BETA3 を使用しています。これがベータ版であることはわかっているので、いくつかのファイルが変更されている可能性がありますが、そのクラスはどこにも見つかりません。

それを機能させる方法についてのアイデアはありますか?

4

2 に答える 2

2

XML入門のドキュメントは、この点で古くなっています。CLIツールの構成方法については、マニュアルの「ツール」セクションを参照してください。

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/tools.html

残りはすべて、説明したとおりに機能します。この部分はできるだけ早く更新します。

于 2010-08-25T11:55:25.110 に答える
2

pearを使用して Doctrine をインストールしたとします。

$ sudo pear install pear.doctrine-project.org/doctrineORM

これにより、DoctrineCommon、DoctrineDBAL、DoctrineORM の 3 つの「Doctrine 2」パッケージがインストールされます。Ubuntu では、これらのパッケージは /usr/share/php/Doctrine に配置され、doctrine コマンド ライン ユーティリティは /usr/bin にインストールされます。

このセットアップでは、これが使用できる cli-config.php のバージョンです (注: DIRの前後に 2 つのアンダースコアが必要です。何らかの理由で表示されませんでした)。

<?php
require ‘Doctrine/ORM/Tools/Setup.php’;
// Setup Autoloader (1)
Doctrine\ORM\Tools\Setup::registerAutoloadPEAR();

require_once 'Doctrine/Common/ClassLoader.php';

$classLoader = new Doctrine\Common\ClassLoader('Entities', __DIR__); 

$classLoader->register();

$classLoader = new Doctrine\Common\ClassLoader('Proxies', __DIR__); 

$classLoader->register();

$config = new \Doctrine\ORM\Configuration();

$config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache);

$driverImpl = $config->newDefaultAnnotationDriver(array(__DIR__."/Entities"));

$config->setMetadataDriverImpl($driverImpl);

$config->setProxyDir(__DIR__ . '/Proxies');

$config->setProxyNamespace('Proxies');

$connectionOptions = array(
        'driver' => 'pdo_mysql',
        'dbname' => 'bugs',
        'user' => 'bugs',
        'password' => 'xyzabc',
  'host' => 'localhost' );

$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config);

$helperSet = new \Symfony\Component\Console\Helper\HelperSet(array(
    'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()),
    'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em)
));
于 2010-10-28T04:07:14.200 に答える