yiister/yii2-mappable-ar

它是Yii框架2的扩展,为任何ActiveRecord模型提供了使用身份映射的能力。

安装: 788

依赖: 2

建议: 0

安全: 0

星标: 20

关注者: 7

分支: 1

开放问题: 2

类型:yii2-extension

1.0.5 2016-10-10 03:14 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:09:46 UTC


README

它是Yii框架2的扩展,为任何ActiveRecord模型提供了使用身份映射的能力。

Build Status codecov.io

俄文文档.

工作原理

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;
}