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

时间:2015-08-09 20:54:57

标签: php doctrine-orm dbal

尝试将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 stuff
    • index.php(其中connection.php)已执行
  1. 所以会发生什么事情,我要么得到"找不到类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);
        }
    

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

    我通过作曲家正确安装了它,至少作曲家告诉我它现在安装正确(作曲家在哪里保存图书馆?)

2 个答案:

答案 0 :(得分:2)

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

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);
    }

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

答案 1 :(得分:0)

注意命名空间的使用:如果其加载器的Doctrine命名空间是System.Collections,则必须将文件放在Doctrine\Common\ClassLoader文件夹中(" Doctrine" with a资本" D")。

请参阅Doctrine DBAL文档的Introduction chapter内显示的代码段。