cycle / active-record
提供了一种使用Active Record模式和Cycle ORM与数据库交互的简单方法
Requires
- php: ^8.2
- cycle/orm: ^2.7
- psr/container: ^2.0
Requires (Dev)
- buggregator/trap: ^1.5
- cycle/entity-behavior: ^1.3
- ergebnis/phpunit-slow-test-detector: ^2.14
- fakerphp/faker: ^1.23
- illuminate/support: ^10.48 || ^11.0
- mockery/mockery: ^1.6
- pestphp/pest: ^2.34
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^10.5
- psalm/plugin-phpunit: ~0.19.0
- rector/rector: ^1.0
- roave/infection-static-analysis-plugin: ^1.35
- roave/security-advisories: dev-latest
- spiral/boot: ^3.12
- spiral/cycle-bridge: ^2.9
- spiral/framework: ^3.12
- spiral/logger: ^3.12
- spiral/testing: ^2.7
- vimeo/psalm: ^5.23
- wayofdev/cs-fixer-config: ^1.4
Suggests
- spiral/cycle-bridge: Provides integration with Spiral Framework
- wayofdev/laravel-cycle-orm-adapter: Laravel adapter for Cycle ORM
- yiisoft/yii-cycle: Yii Cycle ORM integration
This package is auto-updated.
Last update: 2024-08-24 19:23:29 UTC
README
Cycle ORM的Active Record实现
此库通过集成Active Record模式扩展Cycle ORM,为开发者提供了一种直观的、以对象为中心的方式与数据库交互。
与Cycle ORM的默认数据映射模式不同,后者将内存中的对象表示与数据库操作分开,Active Record将数据访问和业务逻辑合并到一个单一实体中。
这允许通过对象的属性和方法直接进行数据操作,从而实现更简单、更快速的开发周期,特别是对于更简单的CRUD操作。
🚩 前提条件
在开始之前,请确保您的开发环境满足以下要求
- PHP版本: 8.2或更高
- 以下任一Cycle ORM适配器
spiral/cycle-bridge
Spiral Framework的官方Cycle ORM适配器yiisoft/yii-cycle
— Yii 3的官方Cycle ORM适配器wayofdev/laravel-cycle-orm-adapter
— 由@wayofdev管理的Laravel 10.x或更高版本的包。
💿 安装
安装此包的首选方法是使用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社区做出贡献!我们欢迎各种形式的贡献。如果您想
非常欢迎您的贡献。在贡献之前,请查阅我们的贡献指南。
🫡 贡献者
🌐 社交链接
- Twitter: 关注我们的组织 @SpiralPHP。
- Discord: 加入我们的社区 Discord。