fyre/orm

一个对象关系映射(ORM)库。

v7.0.3 2024-08-18 05:35 UTC

README

FyreORM 是一个免费的、开源的 PHP 数据库 ORM。

目录

安装

使用 Composer

composer require fyre/orm

在 PHP 中

use Fyre\ORM\ModelRegistry;

方法

添加命名空间

为加载模型添加命名空间。

  • $namespace 是一个表示命名空间的字符串。
ModelRegistry::addNamespace($namespace);

清除

清除所有命名空间和模型。

ModelRegistry::clear();

创建默认模型

创建一个默认的 模型

$model = ModelRegistry::createDefaultModel();

获取默认模型类

获取默认模型类名称。

$defaultModelClass = ModelRegistry::getDefaultModelClass();

获取命名空间

获取命名空间。

$namespaces = ModelRegistry::getNamespaces();

检查命名空间是否存在

检查命名空间是否存在。

  • $namespace 是一个表示命名空间的字符串。
$hasNamespace = ModelRegistry::hasNamespace($namespace);

检查是否已加载

检查模型是否已加载。

  • $alias 是一个表示模型别名的字符串。
$isLoaded = ModelRegistry::isLoaded($alias);

加载

加载一个 模型

  • $alias 是一个表示模型别名的字符串。
$model = ModelRegistry::load($alias);

移除命名空间

移除一个命名空间。

  • $namespace 是一个表示命名空间的字符串。
$removed = ModelRegistry::removeNamespace($namespace);

设置默认模型类

设置默认模型类名称。

  • $defaultModelClass 是一个表示默认模型类名称的字符串。
ModelRegistry::setDefaultModelClass($defaultModelClass);

卸载

卸载一个模型。

  • $alias 是一个表示模型别名的字符串。
$unloaded = ModelRegistry::unload($alias);

使用

加载一个共享的 模型 实例。

  • $alias 是一个表示模型别名的字符串。
$model = ModelRegistry::use($alias);

模型

可以通过扩展 \Fyre\ORM\Model 类来创建自定义模型,在类名后缀为 "Model"。

为了允许自动加载模型实例,请将命名空间添加到 ModelRegistry

删除查询

创建一个新的 删除查询

  • $options 是一个包含查询选项的数组。
    • alias 是一个表示表别名的字符串,默认为模型别名。
$query = $model->deleteQuery($options);

获取连接

获取 连接

  • $type 是一个表示连接类型的字符串,默认为 self::WRITE
$connection = $model->getConnection($type);

模型使用 ConnectionManager 进行数据库连接,您可以通过设置模型的 connectionKeys 属性或使用 setConnection 方法来指定要使用的连接。

protected array $connectionKeys = [
    self::WRITE => 'default',
    self::READ => 'read_replica'
];

如果省略 self::READ 键,它将回退到 self::WRITE 连接进行数据库读取。

插入查询

创建一个新的 插入查询

$query = $model->insertQuery();

替换查询

创建一个新的 替换查询

$query = $model->replaceQuery();

选择查询

创建一个新的 选择查询

  • $options 是一个包含查询选项的数组。
    • alias 是一个表示表别名的字符串,默认为模型别名。
    • connectionType 是一个表示连接类型的字符串,默认为 self::READ
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
$query = $model->selectQuery($options);

设置连接

设置 连接

  • $connection 是一个 连接
  • $type 是一个表示连接类型的字符串,默认为 self::WRITE
$model->setConnection($connection, $type);

子查询

创建一个新的 选择查询

  • $options 是一个包含查询选项的数组。
    • alias 是一个表示表别名的字符串,默认为模型别名。
    • connectionType 是一个表示连接类型的字符串,默认为 self::READ
$query = $model->subquery($options);

更新查询

创建一个新的 更新查询

  • $options 是一个包含查询选项的数组。
    • alias 是一个表示表别名的字符串,默认为模型别名。
$query = $model->updateQuery($options);

更新批量查询

创建一个新的 更新批量查询

  • $options 是一个包含查询选项的数组。
    • alias 是一个表示表别名的字符串,默认为模型别名。
$query = $model->updateBatchQuery($options);

模式

别名字段

为字段名创建别名。

  • $field 是表示字段名的字符串。
  • $alias 是表示别名的字符串,默认为模型别名。
$aliasField = $model->aliasField($field, $alias);

获取别名

获取模型别名。

$alias = $model->getAlias();

默认情况下,别名将是类名或在用 ModelRegistry 加载模型时使用的别名。

获取自动增长键

获取表的自动增长列。

$autoIncrementKey = $model->getAutoIncrementKey();

获取显示名称

获取显示名称。

$displayName = $model->getDisplayName();

默认情况下,显示名称将是具有名称 "name""title""label" 的架构中的第一列,或者您可以使用模型中的 displayName 属性指定列。

protected string $displayName = 'display_name';

获取主键

获取主键。

$primaryKeys = $model->getPrimaryKey();

获取模式

获取 表模式

$tableSchema = $model->getSchema();

获取表

获取表名。

$table = $model->getTable();

默认情况下,表名将是模型别名的蛇形形式,或者您可以使用模型中的 table 属性指定表名。

protected string $table = 'my_table';

设置别名

设置模型别名。

  • $alias 是一个表示模型别名的字符串。
$model->setAlias($alias);

设置显示名称

设置显示名称。

  • $displayName 是表示显示名称的字符串。
$model->setDisplayName($displayName);

设置表

设置表名。

  • $table 是表示表名的字符串。
$model->setTable($table);

实体

获取实体类

获取实体类。

$entityClass = $model->getEntityClass();

模型将使用 实体定位器 通过模型别名查找实体,或者您可以在模型中使用 entityClass 属性指定类。

protected string $entityClass = MyEntity::class;

加载到

将包含的数据加载到实体中。

  • $entity 是一个 实体
  • $contain 是一个包含要包含的关联关系的数组。
$model->loadInto($entity, $contain);

创建新空实体

构建一个新的空 实体

$entity = $model->newEmptyEntity();

创建实体

使用数据构建一个新的 实体

  • $data 是一个包含数据的数组。
  • $options 是一个包含实体选项的数组。
    • associated 是一个包含要解析的关联关系的数组,默认为 null
    • parse 是一个布尔值,指示是否解析用户数据,默认为 true
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
    • validate 是一个布尔值,指示是否验证用户数据,默认为 true
    • clean 是一个布尔值,指示是否清理实体,默认为 false
    • new 是一个布尔值,指示是否将实体标记为新创建,默认为 null
$entity = $model->newEntity($data, $options);

创建多个实体

使用用户数据构建多个新实体。

  • $data 是一个包含数据的数组。
  • $options 是一个包含实体选项的数组。
    • associated 是一个包含要解析的关联关系的数组,默认为 null
    • parse 是一个布尔值,指示是否解析用户数据,默认为 true
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
    • validate 是一个布尔值,指示是否验证用户数据,默认为 true
    • clean 是一个布尔值,指示是否清理实体,默认为 false
    • new 是一个布尔值,指示是否将实体标记为新创建,默认为 null
$entities = $model->newEntities($data, $options);

修补实体

使用用户数据更新实体。

  • $entity 是一个 实体
  • $data 是一个包含数据的数组。
  • $options 是一个包含实体选项的数组。
    • associated 是一个包含要解析的关联关系的数组,默认为 null
    • parse 是一个布尔值,指示是否解析用户数据,默认为 true
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
    • validate 是一个布尔值,指示是否验证用户数据,默认为 true
    • clean 是一个布尔值,指示是否清理实体,默认为 false
    • new 是一个布尔值,指示是否将实体标记为新创建,默认为 null
$model->patchEntity($entity, $data, $options);

修补多个实体

使用用户数据更新多个实体。

  • $entities 是一个包含实体的数组。
  • $data 是一个包含数据的数组。
  • $options 是一个包含实体选项的数组。
    • associated 是一个包含要解析的关联关系的数组,默认为 null
    • parse 是一个布尔值,指示是否解析用户数据,默认为 true
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
    • validate 是一个布尔值,指示是否验证用户数据,默认为 true
    • clean 是一个布尔值,指示是否清理实体,默认为 false
    • new 是一个布尔值,指示是否将实体标记为新创建,默认为 null
$model->patchEntities($entities, $data, $options);

查询方法

删除

删除实体

  • $entity 是一个 实体
  • $options 是一个包含删除选项的数组。
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
    • cascade 是一个布尔值,表示是否级联删除,默认为 true
$result = $model->delete($entity, $options);

删除全部

删除所有匹配条件的行。

  • $conditions 是一个数组或字符串,表示 where 条件。
$affectedRows = $model->deleteAll($conditions);

此方法不会使用回调或级联到相关数据。

删除多个

删除多个实体。

  • $entities 是一个包含实体的数组。
  • $options 是一个包含删除选项的数组。
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
    • cascade 是一个布尔值,表示是否级联删除,默认为 true
$result = $model->deleteMany($entities, $options);

存在

确定是否存在匹配的行。

  • $conditions 是一个数组或字符串,表示 where 条件。
$exists = $model->exists($conditions);

查找

创建一个新的 选择查询

  • $data 是一个包含查询数据的数组。
    • connectionType 是一个表示连接类型的字符串,默认为 self::READ
    • fields 是一个数组或字符串,表示要选择的字段。
    • contain 是一个字符串或数组,包含要包含的关系。
    • join 是一个包含要连接的表的数组。
    • conditions 是一个数组或字符串,表示 where 条件。
    • orderBy 是一个数组或字符串,表示要排序的字段。
    • groupBy 是一个数组或字符串,表示要分组的字段。
    • having 是一个数组或字符串,表示 having 条件。
    • limit 是一个数字,表示查询限制。
    • offset 是一个数字,表示查询偏移。
    • epilog 是一个字符串,表示查询的后续部分。
    • autoFields 是一个布尔值,表示是否启用自动字段。
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
$query = $model->find($data);

获取

检索单个实体。

  • $primaryValues 是一个字符串、整数或数组,包含主键值。
  • $data 是一个包含查询数据的数组。
    • connectionType 是一个表示连接类型的字符串,默认为 self::READ
    • fields 是一个数组或字符串,表示要选择的字段。
    • contain 是一个字符串或数组,包含要包含的关系。
    • join 是一个包含要连接的表的数组。
    • epilog 是一个字符串,表示查询的后续部分。
    • autoFields 是一个布尔值,表示是否启用自动字段。
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
$entity = $model->get($primaryValues, $data);

保存

保存一个 实体

  • $entity 是一个 实体
  • $options 是一个包含保存选项的数组。
    • checkExists 是一个布尔值,表示是否检查新实体是否存在,默认为 true
    • checkRules 是一个布尔值,表示是否验证 规则集,默认为 true
    • saveRelated 是一个布尔值,表示是否保存相关数据,默认为 true
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
    • clean 是一个布尔值,表示是否在保存后清理实体,默认为 true
$result = $model->save($entity, $options);

保存多个

保存多个实体。

  • $entities 是一个包含实体的数组。
  • $options 是一个包含保存选项的数组。
    • checkExists 是一个布尔值,表示是否检查新实体是否存在,默认为 true
    • checkRules 是一个布尔值,表示是否验证 规则集,默认为 true
    • saveRelated 是一个布尔值,表示是否保存相关数据,默认为 true
    • events 是一个布尔值,表示是否触发模型/行为事件,默认为 true
    • clean 是一个布尔值,表示是否在保存后清理实体,默认为 true
$result = $model->saveMany($entities, $options);

更新全部

更新所有匹配条件的行。

  • $data 是一个包含要更新值的数组。
  • $conditions 是一个数组或字符串,表示 where 条件。
$affectedRows = $model->updateAll($data, $conditions);

此方法不会使用回调。

关系方法

添加关系

添加一个 关系

  • $relationship 是一个 关系
$model->addRelationship($relationship);

获取关系

获取一个 关系

  • $name 是一个字符串,表示关系名称。
$relationship = $model->getRelationship($name);

获取所有关系

获取所有关系。

$relationships = $model->getRelationships();

存在关系

确定是否存在 关系

  • $name 是一个字符串,表示关系名称。
$hasRelationship = $model->hasRelationship($name);

删除关系

删除现有的 关系

  • $name 是一个字符串,表示关系名称。
$model->removeRelationship($name);

行为方法

添加行为

模型 添加一个 行为

  • $name 是一个字符串,表示行为名称。
  • $options 是一个包含行为选项的数组。
$model->addBehavior($name, $options);

获取行为

获取一个已加载的 行为

  • $name 是一个字符串,表示行为名称。
$behavior = $model->getBehavior($name);

存在行为

确定 模型 是否具有 行为

  • $name 是一个字符串,表示行为名称。
$hasBehavior = $model->hasBehavior($name);

删除行为

模型 中删除一个 行为

  • $name 是一个字符串,表示行为名称。
$model->removeBehavior($name);

验证

获取规则

获取模型 RuleSet

$rules = $model->getRules();

您可以通过在您的模型中指定一个 buildRules 回调函数 来构建自定义规则。

获取验证器

获取模型 Validator

$validator = $model->getValidator();

您可以通过在您的模型中指定一个 buildValidation 回调函数 来构建自定义验证器。

设置规则

设置模型 RuleSet

$model->setRules($rules);

设置验证器

设置模型 Validator

$model->setValidator($validator);

回调

回调函数可以在您的模型中定义,允许在模型操作的各种点执行或撤销更改。

删除后

在实体被删除后执行回调。

use Fyre\Entity\Entity;

public function afterDelete(Entity $entity) {}

如果此方法返回 false,则不会执行删除操作,事务将回滚。

查找后

在执行查找查询后执行回调。

use Fyre\ORM\Result;

public function afterFind(Result $result): Result {}

规则后

在处理模型规则后执行回调。

use Fyre\Entity\Entity;

public function afterRules(Entity $entity) {}

如果此方法返回 false,则不会执行保存操作。

解析后

在将用户数据解析为实体后执行回调。

use Fyre\Entity\Entity;

public function afterParse(Entity $entity) {}

保存后

在实体保存到数据库后执行回调。

use Fyre\Entity\Entity;

public function afterSave(Entity $entity) {}

如果此方法返回 false,则不会执行保存操作,事务将回滚。

删除前

在实体删除前执行回调。

use Fyre\Entity\Entity;

public function beforeDelete(Entity $entity) {}

如果此方法返回 false,则不会执行删除操作。

查找前

在执行查找查询前执行回调。

use Fyre\ORM\Query;

public function beforeFind(Query $query): Query {}

解析前

在将用户数据解析为实体前执行回调。

use ArrayObject;

public function beforeParse(ArrayObject $data) {}

规则前

在规则回调之前。

use Fyre\Entity\Entity;

public function beforeRules(Entity $entity) {}

如果此方法返回 false,则不会执行保存操作。

保存前

在实体保存到数据库前执行回调。

use Fyre\Entity\Entity;

public function beforeSave(Entity $entity) {}

如果此方法返回 false,则不会执行保存操作,事务将回滚。

构建规则

use Fyre\ORM\RuleSet;

public function buildRules(RuleSet $rules): RuleSet
{
    return $rules;
}

构建验证

use Fyre\Validation\Validator;

public function buildValidation(Validator $validator): Validator
{
    return $validator;
}

查询

获取模型

获取 Model

$model = $query->getModel();

删除

\Fyre\ORM\Queries\DeleteQuery 扩展了 DeleteQuery 类。表和别名将自动从 Model 中设置。

$model->deleteQuery()
    ->where($conditions)
    ->execute();

插入

\Fyre\ORM\Queries\InsertQuery 扩展了 InsertQuery 类。表将自动从 Model 中设置。

$model->insertQuery()
    ->values($values)
    ->execute();

替换

\Fyre\ORM\Queries\ReplaceQuery 扩展了 ReplaceQuery 类。表将自动从 Model 中设置。

$model->replaceQuery()
    ->values($values)
    ->execute();

选择

\Fyre\ORM\Queries\SelectQuery 扩展了 SelectQuery 类,同时提供了几个额外的方法和关系和实体映射的包装器。表和别名将自动从 Model 中设置,字段名将自动作为别名。

$model->selectQuery()
    ->select($fields)
    ->where($conditions)
    ->execute();

所有

以数组形式获取结果。

$results = $query->all();

清除结果

清除缓冲结果。

$query->clearResult();

包含

设置包含关系。

  • $contain 是一个字符串或数组,包含要包含的关系。
  • $overwrite 是一个布尔值,表示是否要覆盖现有包含项,默认为 false
$query->contain($contain, $overwrite);

计数

获取结果计数。

$count = $query->count();

启用自动字段

  • $autoFields 是一个布尔值,表示是否启用自动字段,默认为 true
$query->enableAutoFields($autoFields);

第一

获取第一个结果。

$entity = $query->first();

获取别名

获取别名。

$alias = $query->getAlias();

获取连接类型

获取连接类型。

$connectionType = $query->getConnectionType();

获取包含

获取包含数组。

$contain = $query->getContain();

获取匹配

获取匹配数组。

$matching = $query->getMatching();

获取结果

获取查询结果。

$result = $query->getResult();

与内部连接

INNER JOIN一个关系表。

  • $contain是一个表示要包含的关联关系的字符串。
  • $conditions是一个包含额外连接条件的数组。
$query->innerJoinWith($contain, $conditions);

与左连接

LEFT JOIN一个关系表。

  • $contain是一个表示要包含的关联关系的字符串。
  • $conditions是一个包含额外连接条件的数组。
$query->leftJoinWith($contain, $conditions);

匹配

INNER JOIN一个关系表并加载匹配数据。

  • $contain是一个表示要包含的关联关系的字符串。
  • $conditions是一个包含额外连接条件的数组。
$query->matching($contain, $conditions);

匹配数据将通过_matchingData属性访问。

不匹配

LEFT JOIN一个关系表并排除匹配行。

  • $contain是一个表示要包含的关联关系的字符串。
  • $conditions是一个包含额外连接条件的数组。
$query->notMatching($contain, $conditions);

更新

\Fyre\ORM\Queries\UpdateQuery类扩展了UpdateQuery类。表将自动从Model设置。

$model->updateQuery()
    ->set($values)
    ->where($conditions)
    ->execute();

获取别名

获取别名。

$alias = $query->getAlias();

批量更新

\Fyre\ORM\Queries\UpdateBatchQuery类扩展了UpdateBatchQuery类。表和别名将自动从Model设置,字段名将自动别名。

$model->updateBatchQuery()
    ->set($values, $keys)
    ->execute();

获取别名

获取别名。

$alias = $query->getAlias();

结果

\Fyre\ORM\Result类封装了ResultSet类,同时提供了额外的实体映射和预加载包含结果的处理。

关系

属于

  • $name 是一个字符串,表示关系名称。
  • $data是一个包含关系数据的数组。
    • className是一个表示目标别名的字符串,默认为关系名称。
    • propertyName是一个表示实体属性名称的字符串,默认为单数关系名称的蛇形形式。
    • foreignKey是一个表示当前表中外键列的字符串,默认为目标别名的蛇形单数名称(后缀为"_id")。
    • bindingKey是一个表示目标表中匹配列的字符串,默认为主键。
    • strategy是一个表示选择策略的字符串,默认为"join"。
    • conditions是一个包含额外条件的数组。
$model->belongsTo($name, $data);

拥有多个

  • $name 是一个字符串,表示关系名称。
  • $data是一个包含关系数据的数组。
    • className是一个表示目标别名的字符串,默认为关系名称。
    • propertyName是一个表示实体属性名称的字符串,默认为关系名称的蛇形形式。
    • foreignKey是一个表示目标表中外键列的字符串,默认为当前别名的蛇形单数名称(后缀为"_id")。
    • bindingKey是一个表示当前表中匹配列的字符串,默认为主键。
    • strategy是一个表示选择策略的字符串,默认为"select"。
    • conditions是一个包含额外条件的数组。
    • dependent是一个布尔值,表示是否递归删除相关数据,默认为false
$model->hasMany($name, $data);

拥有一个

  • $name 是一个字符串,表示关系名称。
  • $data是一个包含关系数据的数组。
    • className是一个表示目标别名的字符串,默认为关系名称。
    • propertyName是一个表示实体属性名称的字符串,默认为单数关系名称的蛇形形式。
    • foreignKey是一个表示目标表中外键列的字符串,默认为当前别名的蛇形单数名称(后缀为"_id")。
    • bindingKey是一个表示当前表中匹配列的字符串,默认为主键。
    • strategy是一个表示选择策略的字符串,默认为"join"。
    • conditions是一个包含额外条件的数组。
    • dependent是一个布尔值,表示是否递归删除相关数据,默认为false
$model->hasOne($name, $data);

多对多

  • $name 是一个字符串,表示关系名称。
  • $data是一个包含关系数据的数组。
    • className是一个表示目标别名的字符串,默认为关系名称。
    • through是一个表示连接别名的字符串,默认为当前别名和关系名称的连接形式(按字母顺序排序)。
    • propertyName是一个表示实体属性名称的字符串,默认为关系名称的蛇形形式。
    • foreignKey是一个表示连接表中外键列的字符串,默认为当前别名的蛇形单数名称(后缀为"_id")。
    • foreignKey是一个表示连接表中目标外键列的字符串,默认为关系名称的蛇形单数名称(后缀为"_id")。
    • bindingKey是一个表示当前表中匹配列的字符串,默认为主键。
    • strategy是一个表示选择策略的字符串,默认为"select"。
    • conditions是一个包含额外条件的数组。
$model->manyToMany($name, $data);

在加载数据时,连接表数据将通过_joinData属性访问。

行为注册表

use Fyre\ORM\BehaviorRegistry;

添加命名空间

为自动加载行为添加命名空间。

  • $namespace 是一个表示命名空间的字符串。
BehaviorRegistry::addNamespace($namespace);

清除

清除所有命名空间和行为。

BehaviorRegistry::clear();

查找

查找行为类。

  • $name 是一个字符串,表示行为名称。
$className = BehaviorRegistry::find($name);

获取命名空间

获取命名空间。

$namespaces = BehaviorRegistry::getNamespaces();

检查命名空间是否存在

检查命名空间是否存在。

  • $namespace 是一个表示命名空间的字符串。
$hasNamespace = BehaviorRegistry::hasNamespace($namespace);

加载

加载行为。

  • $name 是一个字符串,表示行为名称。
  • $model是一个Model
  • $options是一个包含行为选项的数组,默认为[]
$behavior = BehaviorRegistry::load($name, $model, $options);

移除命名空间

移除一个命名空间。

  • $namespace 是一个表示命名空间的字符串。
$removed = BehaviorRegistry::removeNamespace($namespace);

行为

行为必须使用 addBehavior 方法附加到 模型 上。加载的行为可以通过将类名作为 $this 的属性来在 模型 中访问。

$this->addBehavior('MyBehavior');

$behavior = $this->MyBehavior;

可以通过扩展 \Fyre\ORM\Behavior 来创建自定义行为,将类名后缀为 "Behavior",并确保 __construct 方法接受 模型 作为参数(可选地,还可以作为第二个参数接受一个 $options 数组)。

行为还可以包含在模型操作期间执行的 回调

获取配置

获取配置选项。

$config = $behavior->getConfig();

获取模型

获取 Model

$model = $behavior->getModel();

时间戳

时间戳行为提供了一种简单的方法,在通过模型保存数据时自动更新创建/修改时间戳。

  • $options 是一个包含行为选项的数组。
    • createdField 是表示创建字段名称的字符串,默认为 "created"。
    • modifiedField 是表示修改字段名称的字符串,默认为 "modified"。
$model->addBehavior('Timestamp', $options);

规则

添加

添加一个规则。

  • $rule 是一个 Closure,接受一个 实体 作为第一个参数,如果验证失败应返回 false
$rules->add($rule);

存在于

创建一个 "存在于" 规则。

  • $fields 是包含字段的数组。
  • $name 是关系的名称。
  • $options 是包含规则选项的数组。
    • targetFields 是包含要在目标表中匹配的字段的数组,默认为主键。
    • callback 是一个 Closure,接受一个 SelectQuery 作为参数。
    • allowNullableNulls 是一个布尔值,指示是否允许可为空的空值,默认为 false
    • message 是表示错误信息的字符串,默认为 Lang::get('RuleSet.existsIn')
$rules->existsIn($fields, $name, $options);

是干净的

创建一个 "是干净的" 规则。

  • $options 是包含规则选项的数组。
  • $fields 是包含字段的数组。
    • message 是表示错误信息的字符串,默认为 Lang::get('RuleSet.isClean')
$rules->isClean($fields, $options);

是唯一的

创建一个 "是唯一的" 规则。

  • $fields 是包含字段的数组。
  • $options 是包含规则选项的数组。
    • callback 是一个 Closure,接受一个 SelectQuery 作为参数。
    • allowMultipleNulls 是一个布尔值,指示是否允许多个空值,默认为 false
    • message 是表示错误信息的字符串,默认为 Lang::get('RuleSet.isUnique')
$rules->isUnique($fields, $options);

验证

验证一个 实体

$rules->validate($entity);