📌  相关文章
📜  学说 dbal laravel install - Javascript (1)

📅  最后修改于: 2023-12-03 15:25:04.716000             🧑  作者: Mango

学习 DBAL Laravel Install - Javascript

介绍

DBAL (Doctrine Database Abstraction Layer) 是一个数据库抽象层,可以在不同的 ORM(Object-Relational Mapping,面向对象的关系映射)系统中使用,ORM 是一种将关系数据库中的数据映射到语言对象的技术。Laravel 是一个使用 PHP 编程语言开发的 Web 应用程序框架。本文主要介绍如何在 Laravel 中安装 DBAL。

步骤
1. 安装 DBAL

可以通过 Composer(PHP 的依存管理工具)安装 DBAL:

composer require doctrine/dbal
2. 配置 Laravel 的数据库连接

在 Laravel 中配置数据库连接信息是非常重要的,在 config/database.php 文件中可以找到数据库连接设置。我们需要将 DBAL 设置为 Laravel 的数据库连接所使用的 PDO 扩展。

'default' => env('DB_CONNECTION', 'mysql'),

'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'url' => env('DATABASE_URL'),
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
        'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    ],

    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],

    // 更多数据库连接设置

],

3. 对 DBAL 进行配置

在 Laravel 工程的根目录下,找到 config/database.php 文件的 "connections" 字段中的设置,将 MySQL 配置修改为以下所示,其中驱动程序设置为 pdo_mysql,将 DBAL 连接添加到连接配置中,将返回值设置为 "doctrine"

    'mysql' => [
        'driver'    => 'pdo_mysql',
        'host'      => env('DB_HOST', '127.0.0.1'),
        'port'      => env('DB_PORT', '3306'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix'    => '',
        'strict'    => true,
        'engine'    => null,
        'options'   => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
        'doctrine_connection' => [
            'driver'   => 'pdo_mysql',
            'host'     => env('DB_HOST', '127.0.0.1'),
            'port'     => env('DB_PORT', '3306'),
            'dbname'   => env('DB_DATABASE', 'forge'),
            'user'     => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
        ],
        'doctrine' => [
            'driver' => 'pdo_mysql',
            'host'     => env('DB_HOST', '127.0.0.1'),
            'port'     => env('DB_PORT', '3306'),
            'dbname'   => env('DB_DATABASE', 'forge'),
            'user'     => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
        ]
    ],
4. 使用 DBAL

在 Laravel 项目中使用 DBAL 可以通过 Doctrine DBAL 访问数据库。

use Doctrine\DBAL\DriverManager;

$connectionParams = array(
    'dbname' => 'mydatabase',
    'user' => 'user',
    'password' => 'password',
    'host' => 'localhost',
    'driver' => 'pdo_mysql',
);

$conn = DriverManager::getConnection($connectionParams);
$stmt = $conn->query('SELECT * FROM mytable');
while ($row = $stmt->fetch()) {
    print_r($row);
}
结论

使用 DBAL 可以更方便地管理 Laravel 中的数据库连接,同时也支持同一代码库中的多种 ORM。