将 Doctrine DBAL 添加到自己的 php 项目中

Posted

技术标签:

【中文标题】将 Doctrine DBAL 添加到自己的 php 项目中【英文标题】:Add Doctrine DBAL into own php project 【发布时间】:2015-11-01 17:30:53 【问题描述】:

尝试将 Doctrine DBAL 添加到我自己的项目中以使用它来访问我的数据库等。我没有作曲家,我从未使用过它。根据文档,这就是我想要做的:

use Doctrine\Common\ClassLoader;

class Connection


    var $connection;

//Constructor
public function __construct()

    require_once "doctrine/Common/ClassLoader.php";

    $classLoader = new ClassLoader('Doctrine', 'doctrine');
    $classLoader->register();
    $config = new Configuration();
    $connectionParams = array(
        'dbname' => 'mydb',
        'user' => 'root',
        'password' => "",
        'host' => 'localhost',
        'driver' => 'pdo_mysql',
    );


    $this->connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);


这取自这里: -http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html 和: - http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/introduction.html

我的项目中添加了 Common 和 DBAL 文件夹

我的文件夹结构如下:

    根 教义 DBAL 常见 php 的东西 index.php (connection.php) 被执行

所以发生的情况是,根据我对代码所做的更改,我要么得到“找不到类 XY”或类似的东西。我永远无法按照教程执行它。

我在这里做错了什么?

我只想拥有连接对象,在那里我可以开始做我的事情,比如使用查询构建器等...

我完全迷路了……

更新:按要求安装了作曲家并立即拥有此代码:

use Doctrine\DBAL\Configuration;

class Connection

    var $connection;

    //Constructor
    public function __construct()
    
        $config = new Configuration();
        $connectionParams = array(
            'url' => 'mysql://root:secret@localhost/mydb',
        );
        $this->connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
    

这是我第一个链接中的第二个代码示例。告诉我“找不到类'Doctrine\DBAL\Configuration'”。有趣的是,IntelliJ 可以完美地自动完成路径(在路径中完成 DBAL 时建议我配置)但 PHP 没有找到它。如果我删除新的配置 PHP 只是告诉我,它没有找到 DriverManager...

虽然我通过 composer 正确安装了它,但至少 composer 告诉我它现在安装正确(composer 在哪里保存库?)

【问题讨论】:

我没有作曲家,也没用过。改这个,你不会后悔的! 我完全同意@michael:Composer 是一种管理外部库的简单方法:try it,你永远不会回去;) 是的,我确定这是正确的。但是对于这个项目,我现在只想让它工作并实际开始使用查询生成器......没有别的...... @michael:好的,刚刚安装了 composer。安装了学说/dbal,它说我成功安装/更新了它。现在:我到底如何使用作曲家导入它的学说?复制示例代码对我不起作用... 好吧,如果设置正确,您可以简单地在文件中使用 `use Namespace\Class' dbal。您能否使用您现在拥有的代码更新您的问题?那我去看看! 【参考方案1】:

您现在需要要求作曲家自动加载文件。

require __DIR__.'/vendor/autoload.php';
use Doctrine\DBAL\Configuration;

class Connection

    var $connection;

    //Constructor
    public function __construct()
    
        $config = new Configuration();
        $connectionParams = array(
            'url' => 'mysql://root:secret@localhost/mydb',
        );
        $this->connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
    

请注意,根据您的目录结构,自动加载文件可能位于其他位置,但通常应该可以。

【讨论】:

但是我敢肯定,一旦您对作曲家使用得更自如,您就会爱上它。这是一个非常好的工具! @BoA456【参考方案2】:

注意命名空间的使用:如果Doctrine的加载器命名空间是Doctrine\Common\ClassLoader,则必须将文件放在Doctrine\Common文件夹中(“Doctrine”,大写“D”)。

参见 Doctrine DBAL 文档的Introduction chapter 中显示的代码 sn-p。

【讨论】:

好的,现在就这样做。感谢您清除它。然而 PHP 现在声明“找不到类 'Doctrine\DBAL\Configuration'”,尽管我添加了使用 Doctrine\DBAL\Configuration ...

以上是关于将 Doctrine DBAL 添加到自己的 php 项目中的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine DBAL、diff 命令和枚举类型

laravel5.1 上安装依赖(doctrine / dbal)

避免使用Doctrine DBAL查询构建器select语句将驼峰别名名称转换为小写

Doctrine/dbal - 尝试将字符串字段更改为日期时出错

Doctrine Dbal Table 未更改

工匠迁移错误“类'Doctrine \ DBAL \ Driver \ PDOMySql \ Driver'not found”,