cycle/active-record

提供了一种使用Active Record模式和Cycle ORM与数据库交互的简单方法

v0.8.0 2024-07-24 19:10 UTC

This package is auto-updated.

Last update: 2024-08-24 19:23:29 UTC


README




Build Status Total Downloads Latest Stable Version Commits since latest release PHP Version Require Codecov Coverage Type Coverage Mutation testing badge PHP Stan Level 5 of 9 Discord Follow on Twitter (X)

Cycle ORM的Active Record实现

此库通过集成Active Record模式扩展Cycle ORM,为开发者提供了一种直观的、以对象为中心的方式与数据库交互。

与Cycle ORM的默认数据映射模式不同,后者将内存中的对象表示与数据库操作分开,Active Record将数据访问和业务逻辑合并到一个单一实体中。

这允许通过对象的属性和方法直接进行数据操作,从而实现更简单、更快速的开发周期,特别是对于更简单的CRUD操作。


🚩 前提条件

在开始之前,请确保您的开发环境满足以下要求


💿 安装

安装此包的首选方法是使用Composer

composer require cycle/active-record

包安装后,您需要可选地注册引导加载程序/服务提供者在您的应用程序中。

→ Spiral Framework

注意

如果您使用spiral-packages/discoverer包在Spiral Framework上安装此包,则无需自己注册引导加载程序。它将自动注册。

更新应用程序配置中的引导加载程序列表

<?php

declare(strict_types=1);

namespace App\Application;

use Spiral\Cycle\Bootloader as CycleBridge;
use Cycle\ActiveRecord\Bridge\Spiral\Bootloader\ActiveRecordBootloader;

class Kernel extends \Spiral\Framework\Kernel
{
    public function defineBootloaders(): array
    {
        return [
            // ...
        
            // ORM
            CycleBridge\SchemaBootloader::class,
            CycleBridge\CycleOrmBootloader::class,
            CycleBridge\AnnotatedBootloader::class,
            
            // ActiveRecord
            ActiveRecordBootloader::class,
            
            // ...
        ];
}

有关引导加载程序的更多信息,请参阅Spiral Framework文档

→ Laravel

注意

如果您使用Laravel,则无需自己注册服务提供者。它将自动注册。

→ Yii 3

有关配置说明,请参阅yii-cycle安装指南

→ 其他框架

此包使用PSR-11兼容的container来解决依赖关系。在容器初始化后,您需要将container实例传递给静态外观

\Cycle\ActiveRecord\Facade::setContainer($container);

📖 使用方法

注意

有关详细的使用说明,请参阅文档

→ 基本示例

使用Active Record定义实体

use Cycle\ActiveRecord\ActiveRecord;
use Cycle\Annotated\Annotation\Column;
use Cycle\Annotated\Annotation\Entity;

#[Entity(table: 'users')]
class User extends ActiveRecord
{
    #[Column(type: 'primary', typecast: 'int')]
    private int $id;

    #[Column(type: 'string')]    
    private string $name;

    public function __construct(string $name)
    {
        $this->name = $name;
    }
    
    public function id(): int
    {
        return $this->id;
    }
    
    public function name()
    {
        return $this->name;
    }
}

创建新记录

$user = new User(name: 'John');
$user->save();

🧪 运行测试

→ PHPUnit测试

要运行测试,请运行以下命令

make test

→ 变异测试

要运行变异测试,请使用infection/infection

make infect

→ 静态分析

使用PHPStan进行代码质量检查

make lint-stan

以及使用Psalm

make lint-psalm

→ 编码规范修复

使用PHP编码规范修复器(PHP CS Fixer)修复代码,以符合我们的规范

make lint-php

→ 检查Yaml文件

检查项目中的所有yaml文件

make lint-yaml

→ 检查Markdown文件

检查项目中的所有yaml文件

make lint-md

→ 检查GitHub Actions

检查项目中的所有yaml文件

make lint-actions

🔒 安全策略

本项目有一个安全策略


🙌 想要贡献吗?

感谢您考虑为cycle社区做出贡献!我们欢迎各种形式的贡献。如果您想

非常欢迎您的贡献。在贡献之前,请查阅我们的贡献指南

Conventional Commits


🫡 贡献者

Contributors Badge

🌐 社交链接

  • Twitter: 关注我们的组织 @SpiralPHP
  • Discord: 加入我们的社区 Discord

⚖️ 许可证

Licence