atlas/symfony

Symfony 4 对 Atlas 3 的扩展包

安装次数: 17,684

依赖者: 0

建议者: 0

安全: 0

星标: 10

关注者: 4

分支: 4

开放问题: 3

类型:symfony-bundle

1.2.0 2018-08-14 12:37 UTC

This package is auto-updated.

Last update: 2024-09-11 04:32:09 UTC


README

此包使 Atlas ORM 和命令行工具作为扩展包可用于 Symfony 4 项目。

(Atlas 是用于您的持久层的数据映射器,而不是您的领域层。)

安装和配置

  1. 在您的 Symfony 4 项目中,启用贡献者配方

    composer config extra.symfony.allow-contrib true
    
  2. 需要 atlas/symfony 包;这将激活安装过程中的一部分 Symfony Flex 配方

    composer require atlas/symfony ~1.0
    
  3. 编辑这些新的 .env 变量以定义您的数据库连接

    ATLAS_PDO_DSN=mysql:host=myhost;dbname=mydatabase
    ATLAS_PDO_USERNAME=myusername
    ATLAS_PDO_PASSWORD=mypassword
    

注意

如果您使用 PHPStorm,您可能希望将 IDE 元文件复制到项目中以获得 Atlas 类的完整自动完成

cp ./vendor/atlas/orm/resources/phpstorm.meta.php ./.phpstorm.meta.php

atlas.yaml 配置文件中,以下设置是显著的

  • atlas.orm.atlas.log_queries:将其设置为 true 以启用查询日志的 Web 分析师数据收集器。

  • atlas.orm.atlas.transaction_class:将其设置为 Atlas 事务策略类之一,例如 Atlas\\Orm\\Transaction\\AutoTransact。有关更多信息,请参阅事务文档

  • 任何连接配置下的 options 部分可用于通过 PDO 构造函数 设置 PDO 属性。例如

    dsn: '%env(resolve:ATLAS_PDO_DSN)%'
    username: '%env(resolve:ATLAS_PDO_USERNAME)%'
    password: '%env(resolve:ATLAS_PDO_PASSWORD)%'
    options:
        !php/const PDO::EMULATE_PREPARES: false
        !php/const PDO::ATTR_CASE: !php/const PDO::CASE_NATURAL

入门指南

生成映射器

使用命令行工具创建所有数据库表的骨架文件

mkdir src/DataSource
php bin/console atlas:skeleton

config/packages/atlas.yaml 文件指定 App\DataSource\ 作为命名空间,以及 src/DataSource/ 作为目录。要更改它们,根据需要修改 atlas.cli.config.input 中的 directorynamespace 值。

数据库表名将转换为与 PHP 中相关类型名称的单数形式。如果您想为某些表指定不同的类型名称,请修改 atlas.yaml 文件中的 atlas.cli.transform 值,以将表名映射到类型名。

随着您对数据库的更改,重新运行骨架生成器,相关的表文件将重新生成。

有关更多信息,请参阅 http://atlasphp.io/cassini/skeleton/

使用 Atlas

现在已为所有数据库表创建了映射器,您可以使用 Symfony 依赖注入系统自动将 Atlas 添加到您的类中。

namespace App;

use Atlas\Orm\Atlas;
use App\DataSource\Thread\Thread
use App\DataSource\Thread\ThreadRecord;

class ApplicationService
{
    public function __construct(Atlas $atlas)
    {
        $this->atlas = $atlas;
    }

    public function fetchThreadById($thread_id) : ThreadRecord
    {
        return $this->atlas->fetchRecord(Thread::class, $thread_id);
    }
}

有关使用 Atlas 的完整文档,请参阅 http://atlasphp.io/cassini/orm/

享受吧!