Yii Active Record 1.0
2025-12-09
287次浏览
我们高兴地推出 Yii Active Record 的首个稳定版本 —— 这是一款针对 PHP 开发的 Active Record模式实现方案。
该包基于 Yii DB 构建,这意味着它开箱即支持主流关系型数据库:PostgreSQL、MySQL、MSSQL、Oracle、SQLite。
灵活的模型属性处理 ¶
- 动态属性 —— 通过 #[\AllowDynamicProperties] 实现快速原型开发
- 公共属性
- 受保护属性 —— 通过取值器 / 赋值器(getters/setters)实现封装
- 私有属性
- 魔术属性
强大的关联关系系统 ¶
- 一对一
- 一对多
- 多对一
- 多对多 —— 三种实现方式(关联表、关联模型、键数组)
- 深度关联 —— 通过中间关联获取关联记录
- 反向关联
- 贪婪加载 —— 解决 N+1 查询问题
基于 Trait 的可扩展性 ¶
ArrayableTrait—— 将模型转换为数组ArrayAccessTrait—— 以数组形式访问属性ArrayIteratorTrait—— 遍历模型属性CustomConnectionTrait—— 自定义数据库连接EventsTrait—— 事件 / 处理器系统FactoryTrait—— 集成 Yii 工厂以实现依赖注入(DI)MagicPropertiesTrait和MagicRelationsTrait—— 魔术访问器RepositoryTrait—— 仓储模式
附加功能 ¶
- 乐观锁 —— 通过记录版本控制实现并发控制
- 依赖注入 —— 支持基于构造函数的注入
- 灵活的配置 —— 多种方式定义数据库连接
示例 ¶
Active Record 类示例:
/**
* Entity User
*
* Database fields:
* @property int $id
* @property string $username
* @property string $email
**/
#[\AllowDynamicProperties]
final class User extends \Yiisoft\ActiveRecord\ActiveRecord
{
public function tableName(): string
{
return '{{%user}}';
}
}
及其使用方法:
// Creating a new record
$user = new User();
$user->set('username', 'alexander-pushkin');
$user->set('email', 'pushkin@example.com');
$user->save();
// Retrieving a record
$user = User::query()->findByPk(1);
// Read properties
$username = $user->get('username');
$email = $user->get('email');
新闻归档
热门标签
- yii3
- 扩展
- 发布
- yii2
- debug
- view
- auth client
- html
- bootstrap
- release
- redis
- Yii 1.1
- apidoc
- mongodb
- http
- db
- validation
- cache
- Yii 2.0
- runner
- extensions
- console
- gii
- error handler
- mailer
- http 客户端
- queue
- twig
- translator
- hydrator
- widget
- sphinx
- log
- assets
- config
- router
- middleware
- symfonymailer
- elasticsearch
- widgets
- swiftmailer
- imagine
- 图书
- rbac
- swagger
- data
- csrf
- logging
- fastroute
- application