yiister / yii2-mappable-ar
它是Yii框架2的扩展,为任何ActiveRecord模型提供了使用身份映射的能力。
1.0.5
2016-10-10 03:14 UTC
Requires
- php: >=5.4.0
- yiisoft/yii2: ~2.0.0
Requires (Dev)
- codeception/codeception: ^2.2
- yiisoft/yii2-codeception: ^2.0
This package is not auto-updated.
Last update: 2024-09-14 18:09:46 UTC
README
它是Yii框架2的扩展,为任何ActiveRecord模型提供了使用身份映射的能力。
俄文文档.
工作原理
ActiveRecordTrait
覆盖了模型的 find
方法。此方法创建一个自定义的 ActiveQuery
。当调用 one
(all
) 方法时,获取到的模型(模型)保存到 identityMap
作为属性数组(节省内存)。后续请求返回数据,而不需要查询数据库。
顺便说一句,以下方法被允许
getById(integer $id, boolean $asArray = false)
- 通过主键获取模型或属性数组(取决于第二个参数的值);getByAttribute(string $attribute, string $value, boolean $asArray = false)
- 通过唯一属性值获取模型或属性数组(取决于第二个参数的值);getMap()
- 以属性数组的形式从identityMap
获取所有模型;clearMap()
- 清除identityMap
。
安装
安装此扩展的首选方式是通过 composer。
运行
composer require --prefer-dist yiister/yii2-mappable-ar
或添加
"yiister/yii2-mappable-ar": "~1.0.0"
到您的 composer.json 的 require
部分。
设置
此扩展支持以下设置
idAttribute
- 主键属性(默认为id
);identityMapMaxSize
- identityMap 中的最大元素数量(默认为-1
= 无限制);uniqueAttributes
- 包含唯一值的属性名称数组。它在getByAttribute
方法中使用。
例如,要将主键属性更改为 key
,请将以下代码添加到您的模型中:public static $idAttribute = 'key';
。
使用
只需将 use yiister\mappable\ActiveRecordTrait;
添加到您的模型中,以使用身份映射。您将在之后获得所有功能。
警告! 如果您已在模型中覆盖了 find
方法,则必须调用 activeRecordTraitFind()
方法并处理其结果。
示例
public static function find() { $query = static::activeRecordTraitFind(); // another work with $query return $query; }