首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Doctrine DBAL?

如何使用Doctrine DBAL?
EN

Stack Overflow用户
提问于 2011-07-18 15:05:06
回答 3查看 4.8K关注 0票数 3

我有这个文件夹结构

代码语言:javascript
复制
[-] myapp/
    [+] app/
    [-] lib/
        [-] vendor/
            [-] doctrine/
                [-] Doctrine/
                        Common/
                        DBAL/
                        Symfony/
                [+] bin/
    [-] sites/
        [-] default/
            [-] test/
                    test-doctrine-dbal.php

我在文档中尝试了这些代码。

代码语言:javascript
复制
    <?php

use Doctrine\Common\ClassLoader;

require dirname(__FILE__).'/../../../lib/vendor/doctrine/Doctrine/Common/ClassLoader.php';

$classLoader = new ClassLoader('Doctrine', dirname(__FILE__).'/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php');
$classLoader->register();

$config = new \Doctrine\DBAL\Configuration();
$connectionParams = array(
    'dbname' => 'cdcol',
    'user' => 'root',
    'password' => '',
    'host' => 'localhost',
    'driver' => 'pdo_mysql',
);
$conn = DriverManager::getConnection($connectionParams, $config);

$sql = "SELECT * FROM cds";
$stmt = $conn->query($sql);
while ($row = $stmt->fetch()) {
    echo $row['titel'];
}
?>

我得到了警告:

代码语言:javascript
复制
Warning: require(D:\xampp\htdocs\myphp\sites\default\test/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php\Doctrine\DBAL\Configuration.php) [function.require]: failed to open stream: No such file or directory in D:\xampp\htdocs\myphp\lib\vendor\doctrine\Doctrine\Common\ClassLoader.php on line 148

和一个错误:

代码语言:javascript
复制
Fatal error: require() [function.require]: Failed opening required 'D:\xampp\htdocs\myphp\sites\default\test/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php\Doctrine\DBAL\Configuration.php' (include_path='.;D:\xampp\php\PEAR') in D:\xampp\htdocs\myphp\lib\vendor\doctrine\Doctrine\Common\ClassLoader.php on line 148

我对PHP名称空间了解不多。阅读PHP手册中的PHP命名空间仍然不能解决这个问题。如果我想在该目录结构中使用Doctrine DBAL,该代码是否正确?

EN

回答 3

Stack Overflow用户

发布于 2011-07-18 15:29:13

您需要将Doctrine库路径添加到include_path。请参阅get_include_pathset_include_path PHP函数。

票数 2
EN

Stack Overflow用户

发布于 2011-07-18 23:05:01

在我看来这是错误的(来自警告)

代码语言:javascript
复制
D:\xampp\htdocs\myphp\sites\default\test/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php\Doctrine\DBAL\Configuration.php

我不太了解php,但我不认为文件路径可以解析。现在,试着删除dirname(___FILE___)并在其中硬编码路径。

票数 1
EN

Stack Overflow用户

发布于 2013-11-15 20:31:08

ClassLoader构造函数的第二个参数无效:

新原则=新原则(‘

’,dirname(_FILE_).'/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php');)

第二个参数应该是Doctrine目录的include path,并且不应该是一个文件。

因此,正确的一行是:

新原则=新原则(‘

’,'/../../../lib/vendor/doctrine/');

)

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

https://stackoverflow.com/questions/6729592

复制
相关文章

相似问题

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