首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置Doctrine 2需要帮助

设置Doctrine 2需要帮助
EN

Stack Overflow用户
提问于 2010-07-15 21:45:25
回答 4查看 11.9K关注 0票数 3

我设置了Doctrine 1 b4,但现在似乎当我尝试Doctrine 2时,它失败了

我在D:\ResourceLibrary\Frameworks\Doctrine上安装了Doctrine

代码语言:javascript
复制
D:\ResourceLibrary\Frameworks\Doctrine\bin
D:\ResourceLibrary\Frameworks\Doctrine\Doctrine
D:\ResourceLibrary\Frameworks\Doctrine\Doctrine\Common
D:\ResourceLibrary\Frameworks\Doctrine\Doctrine\DBAL
D:\ResourceLibrary\Frameworks\Doctrine\Doctrine\ORM

我将D:\ResourceLibrary\Frameworks\Doctrine\bin放在PATH窗口环境变量中,并将D:\ResourceLibrary\Frameworks\Doctrine添加到php.ini include_path

我发现当我尝试这样做的时候

代码语言:javascript
复制
D:\>php doctrine.php
Could not open input file: doctrine.php

失败...我想既然我在PATH Windows环境变量中有了D:\ResourceLibrary\Frameworks\Doctrine\bin,它应该能够找到doctrine.php

代码语言:javascript
复制
D:\ResourceLibrary\Frameworks\Doctrine\bin>php doctrine.php

Warning: require(D:\ResourceLibrary\Frameworks\Doctrine\bin/../lib/vendor\Symfony\Components\Console\Helper\HelperSet.ph
p): failed to open stream: No such file or directory in D:\ResourceLibrary\Frameworks\Doctrine\Doctrine\Common\ClassLoad
er.php on line 143

Fatal error: require(): Failed opening required 'D:\ResourceLibrary\Frameworks\Doctrine\bin/../lib/vendor\Symfony\Compon
ents\Console\Helper\HelperSet.php' (include_path='D:\ResourceLibrary\Frameworks\ZendFramework\library;D:\ResourceLibrary
\Frameworks\Doctrine;.;c:\php\includes') in D:\ResourceLibrary\Frameworks\Doctrine\Doctrine\Common\ClassLoader.php on li
ne 143

然后第二次尝试,通过但有错误...

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-16 22:44:44

您不需要整个Symfony框架。只是Doctrine所依赖的部分。

如果您下载ORM组件的current version (现在位于BETA2),它将包含一个名为Symfony的文件夹(可能在lib/vendor/Symfony中,但它可能会随着新版本的发布而移动)。您需要确保doctrine.phpcli-config.php中的ClassLoader可以找到Symfony文件夹。

代码语言:javascript
复制
$classLoader = new \Doctrine\Common\ClassLoader('Symfony', __DIR__ . '/path/to/Symfony');
$classLoader->register();

我希望这个信息是准确的。Doctrine团队一直在扰乱发布的结构,他们越来越接近最终版本。

票数 3
EN

Stack Overflow用户

发布于 2010-08-30 13:22:29

在昨晚花了几个小时在我的机器上配置Doctrine 2之后,我终于成功地使用Doctrine 2了。

我是这样配置Doctrine 2的。

有几种方法可以安装Doctrine 2,不过我更喜欢从包管理器下载。

首先,我从http://www.doctrine-project.org/projects/orm/download下载了DoctrineORM-2.0.0BETA3.tgz包

我将tar文件解压到我测试样例代码的测试文件夹中。我的文件夹看起来像

代码语言:javascript
复制
./test
DoctrineORM/
DoctrineORM/bin
DoctrineORM/bin/Doctrine

然后我在根目录'model‘和'proxies’上创建了两个文件夹。

现在我们需要引导Doctrine。

代码语言:javascript
复制
--- Bootsrap ---
<?php
//    test.php

require 'DoctrineORM/Doctrine/Common/ClassLoader.php';
$classLoader = new \Doctrine\Common\ClassLoader('Doctrine', 'DoctrineORM');
$classLoader->register(); // register on SPL autoload stack

$classloader = new \Doctrine\Common\ClassLoader('model', __DIR__);
$classloader->register();

$config = new \Doctrine\ORM\Configuration();
$cache = new \Doctrine\Common\Cache\ArrayCache();
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);

$driverImpl = $config->newDefaultAnnotationDriver('model');
$config->setMetadataDriverImpl($driverImpl);
$config->setProxyDir('proxies');
$config->setProxyNamespace('proxies');

$config->setAutoGenerateProxyClasses(true);
$config->getAutoGenerateProxyClasses();

$connectionOptions = array(
    'driver' => 'pdo_mysql',
    'dbname' => 'test',
    'user' => '[DB_User]',
    'password' => '[DB_Pass]'
);

$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config);
//echo 'Hello World!' . PHP_EOL;

//    Get result from Table
$q = $em->createQuery('SELECT c FROM model\User c ORDER BY c.name');
$t = $q->getResult();
echo "<pre>"; print_r($t);

//    Save a new User to DB
$uu = new model\User();
$uu->name = 'test name1';
$uu->age = 4;
$em->persist($uu);
$em->flush();    
--- Bootsrap ---

然后,我在model目录中创建了一个模型文件

代码语言:javascript
复制
--- Model - User.php ---
<?php
//    Model File model/User.php 
namespace Model;

/** @Entity @Table(name="users") */
class User
{
    /**
     * @Id @Column(type="integer")
     * @GeneratedValue(strategy="AUTO")
     */
    public     $id;
    /** @Column(type="string", length=50) */
    public     $name;
    /** @Column(type="integer", length=50) */
    public $age;
}
--- Model - User.php ---

我的完整文件夹结构现在如下所示。

代码语言:javascript
复制
./test
DoctrineORM/
DoctrineORM/bin
DoctrineORM/bin/Doctrine

Model/
Model/User.php
test.php

希望这能对你有所帮助。如果你需要任何进一步的帮助,我可以给你发送完整的源代码,这在我的机器上运行良好。

票数 6
EN

Stack Overflow用户

发布于 2010-07-15 23:14:10

如果你想在新的Doctrine 2测试版中使用命令行界面,你还必须安装Symfony 2框架(因为它包含了控制台助手),并将其放入你的包含路径中。

据我所知,目前还没有可用的PEAR安装,所以你必须从Symfony 2 website或通过Git下载源代码。

旁注:似乎您还试图在一个不存在doctrine.php的路径上执行它。这就是为什么你会得到

无法打开输入文件: doctrine.php

错误消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3256107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档