类索引
索引的基类。
Elasticsearch 中的索引大致相当于关系型数据存储中的表或集合。此 ODM 将每个索引映射到一个类。
常量
属性摘要
-
$_connection 受保护的
Cake\ElasticSearch\Datasource\Connection
连接实例
-
$_documentClass 受保护的
字符串
表示此类型单个文档的类的名称
-
$_eventClass 受保护的
字符串
新事件对象的默认类名。
-
$_eventManager 受保护的
Cake\Event\EventManagerInterface|null
此对象用来分派内部事件的 Cake\Event\EventManager 实例。
-
$_name 受保护的
字符串
此类表示的 Elasticsearch 索引的名称
-
$_registryAlias 受保护的
字符串
用来创建此索引对象的注册表键
-
$_rulesChecker 受保护的
Cake\Datasource\RulesChecker|null
要应用于此表保存的实体的域规则
-
$_validatorClass 受保护的
字符串
验证器类。
-
$_validators 受保护的
arrayCake\Validation\Validator>
按名称索引的验证对象列表
-
$embeds 受保护的
数组
此类型具有的嵌入式子文档集合。
-
$schema 受保护的
Cake\ElasticSearch\Datasource\MappingSchema
此类型的映射架构。
方法摘要
-
__construct() 公共的
构造函数
-
aliasField() 公共的
elasticsearch 中的无操作方法
-
buildRules() 公共的
在修改提供的规则检查器后返回规则检查器对象。
-
callFinder() 公共的
直接调用查找器方法并将其应用于传递的查询,如果没有传递查询,将创建一个新查询并返回。
-
checkRules() 公共的
返回传递的实体是否符合规则检查器中存储的所有规则。
-
createValidator() 受保护的
使用类中的自定义方法创建验证器。
-
defaultConnectionName() 公共的 静态的
创建实例时要注入的默认连接名称。
-
delete() 公共的
删除单个实体。
-
deleteAll() 公共的
删除所有匹配的记录。
-
dispatchEvent() 公共的
用于创建和分派事件的包装器。
-
embedMany() 公共的
将此类型文档中的属性标记为嵌入式子文档列表。
-
embedOne() 公共的
将此类型文档中的属性标记为嵌入式子文档。
-
embedded() 公共的
获取此类型具有的嵌入式文档列表。
-
exists() 公共的
如果此存储库中存在与指定条件匹配的任何记录,则返回 true。
-
find() 公共的
为此存储库创建一个新的查询,并根据所选搜索类型应用一些默认值。
-
findAll() 公共的
按原样返回查询。
-
get() 公共的
通过其主键找到记录后返回单个记录,如果未找到记录,此方法将抛出异常。
-
getAlias() 公共的
返回类型名称。
-
getConnection() 公共的
返回连接实例。
-
getEntityClass() 公共的
返回用于为此索引提取文档的类。
-
getEventManager() 公共的
返回此对象的 Cake\Event\EventManager 管理器实例。
-
getName() 公共的
返回索引名称。
-
getRegistryAlias() 公共的
返回用来创建此实例的索引注册表键。
-
getTable() 公共的
获取索引名称,如 QueryTrait 所需。
-
getValidator() 公共的
返回标记为 $name 的验证规则。可以有多个不同命名的验证集,这在您需要在系统中从不同例程保存时使用不同的规则时很有用。
-
hasField() 公共的
检查映射中是否存在字段。
-
hasValidator() 公共的
检查是否已设置验证器。
-
implementedEvents() 公共的
获取此索引感兴趣的回调。
-
initialize() 公共的
初始化索引实例。在构造函数之后调用。
-
marshaller() 公共的
获取此索引实例的编组器。
-
newEmptyEntity() 公共的
这将创建一个新的实体对象。
-
newEntities() 公共的
从数组中创建实体列表 + 关联实体。
-
newEntity() 公共的
从数组中创建新的实体 + 关联实体。
-
patchEntities() 公共的
将
$data
中传递的每个元素合并到$entities
中找到的实体中,尊重实体上配置的可访问字段。合并是通过匹配$data
和$entities
中每个元素的主键来完成的。 -
patchEntity() 公共的
将传递的
$data
合并到$entity
中,尊重实体上配置的可访问字段。在被更改后返回相同的实体。 -
query() 公共的
为此存储库创建一个新的查询实例。
-
rulesChecker() 公共的
返回此实例的 RulesChecker。
-
save() 公共的
根据标记为脏的字段持久保存实体,并在成功保存后返回相同的实体,或在出现任何错误时返回 false。
-
saveMany() 公共的
根据标记为脏的字段持久保存实体列表,并在成功保存后返回相同的实体,或在出现任何错误时返回 false。触发
Model.beforeSave
和Model.afterSave
事件。选项
checkRules
默认值为 true。在删除记录之前检查删除规则。routing
默认值为 null。如果设置,则用作存储文档的路由键。
-
schema() 公共的
从索引类型获取映射数据。
-
setAlias() 公共的
设置索引别名。
-
setConnection() 公共的
设置连接实例。
-
setEntityClass() 公共的
设置用来为此索引提取文档的类。
-
setEventManager() 公共的
返回此对象的 Cake\Event\EventManagerInterface 实例。
-
setName() public
设置索引名称。
-
setRegistryAlias() public
设置用于创建此索引实例的索引注册表键。
-
setValidator() public
此方法在给定名称下存储自定义验证器。
-
updateAll() public
更新所有匹配的记录。
-
validationDefault() public
返回默认验证器对象。子类可以覆盖此函数以向验证器对象添加默认验证集。
-
validationMethodExists() protected
检查验证方法是否存在。
方法详情
__construct() ¶ public
__construct(array $config = [])
构造函数
选项
- connection: Elastica 实例。
- name: 索引的名称。如果未设置,则名称将从类名推断。
- type: 使用的类型映射的名称。如果未设置,则类型将等于“name”。
- eventManager: 用于注入特定事件管理器。
在构造函数的最后,将触发 Model.initialize
事件。
参数
-
array
$config optional 配置选项,见上文。
aliasField() ¶ public
aliasField(string $field): string
elasticsearch 中的无操作方法
如果字段已别名,则将执行无操作。
参数
-
string
$field 要别名的字段。
返回值
字符串
buildRules() ¶ public
buildRules(Cake\Datasource\RulesChecker $rules): Cake\Datasource\RulesChecker
在修改提供的规则检查器后返回规则检查器对象。
子类应覆盖此方法以初始化将应用于此实例保存的实体的规则。
参数
-
Cake\Datasource\RulesChecker
$rules 要修改的规则对象。
返回值
Cake\Datasource\RulesChecker
callFinder() ¶ public
callFinder(string $type, Cake\ElasticSearch\Query $query, array $options = []): Cake\ElasticSearch\QueryCake\ElasticSearch\Document>
直接调用查找器方法并将其应用于传递的查询,如果没有传递查询,将创建一个新查询并返回。
参数
-
string
$type 要调用的查找器的名称。
-
Cake\ElasticSearch\Query
$query 要将查找器选项应用到的查询对象。
-
array
$options optional 传递给查找器的选项列表。
返回值
Cake\ElasticSearch\QueryCake\ElasticSearch\Document>
抛出
BadMethodCallException
checkRules() ¶ public
checkRules(Cake\Datasource\EntityInterface $entity, string $operation = RulesChecker::CREATE, ArrayObject<string, mixed>|array|null $options = null): bool
返回传递的实体是否符合规则检查器中存储的所有规则。
参数
-
Cake\Datasource\EntityInterface
$entity 要检查有效性的实体。
-
string
$operation optional 正在执行的操作。可以是“create”、“update”或“delete”。
-
ArrayObject<string, mixed>|array|null
$options optional 要传递给规则的选项。
返回值
bool
createValidator() ¶ protected
createValidator(string $name): Cake\Validation\Validator
使用类中的自定义方法创建验证器。
此方法仅用于构建新的验证器,不会将其存储在您的对象中。如果您想构建和重复使用验证器,请改用 getValidator() 方法。
参数
-
string
$name 要创建的验证集的名称。
返回值
Cake\Validation\Validator
抛出
InvalidArgumentException
delete() ¶ public
delete(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool
删除单个实体。
根据定义关联时使用的“dependent”选项,从数据库中删除实体以及可能相关的关联。
触发 Model.beforeDelete
和 Model.afterDelete
事件。
参数
-
Cake\Datasource\EntityInterface
$entity 要删除的实体。
-
array<string, mixed>
$options optional 删除的选项。
返回值
bool
deleteAll() ¶ public
deleteAll(Closure|array|string|null $conditions): int
删除所有匹配的记录。
删除与提供的条件匹配的所有记录。
此方法 *不会* 触发 beforeDelete/afterDelete 事件。如果您需要这些事件,请先加载一组记录并将其删除。
参数
-
Closure|array|string|null
$conditions 一组条件,类似于与 find() 一起使用的条件。
返回值
int
另请参阅
dispatchEvent() ¶ public
dispatchEvent(string $name, array $data = [], TSubject|null $subject = null): Cake\Event\EventInterface<TSubject>
用于创建和分派事件的包装器。
返回一个分发的事件。
参数
-
string
$name 事件的名称。
-
array
$data optional 您希望与该事件一起传输的任何值,侦听器都可以读取。
-
TSubject|null
$subject optional 此事件适用的对象(默认情况下为 $this)。
返回值
Cake\Event\EventInterface<TSubject>
embedMany() ¶ public
embedMany(string $name, array $options = []): void
将此类型文档中的属性标记为嵌入式子文档列表。
嵌入式文档将转换为命名文档类型的实例。这使您可以将实体级行为附加到文档的子部分。
此方法将从命名属性创建嵌入式文档列表。
参数
-
string
$name 包含嵌入式文档的属性的名称。
-
array
$options optional 嵌入式文档的选项。
返回值
void
embedOne() ¶ public
embedOne(string $name, array $options = []): void
将此类型文档中的属性标记为嵌入式子文档。
嵌入式文档将转换为命名文档类型的实例。这使您可以将实体级行为附加到文档的子部分。
参数
-
string
$name 包含嵌入式文档的属性的名称。
-
array
$options optional 嵌入式文档的选项。
返回值
void
exists() ¶ public
exists(Closure|array|string|null $conditions): bool
如果此存储库中存在与指定条件匹配的任何记录,则返回 true。
参数
-
Closure|array|string|null
$conditions 传递给查询的条件列表。
返回值
bool
find() ¶ public
find(string $type = 'all', mixed ...$args): Cake\ElasticSearch\Query
为此存储库创建一个新的查询,并根据所选搜索类型应用一些默认值。
Model.beforeFind 事件
每个 find() 将为所有附加的侦听器触发 Model.beforeFind
事件。任何侦听器都可以使用 $query 设置一个有效的结果集。
参数
-
string
$type optional 要执行的查询类型。
-
mixed
...$args 查找操作的其他参数。
返回值
Cake\ElasticSearch\Query
findAll() ¶ public
findAll(Cake\ElasticSearch\Query $query, array $options = []): Cake\ElasticSearch\Query
按原样返回查询。
参数
-
Cake\ElasticSearch\Query
$query 一个 Elasticsearch 查询对象。
-
array
$options optional 要用于查询逻辑的一组选项。
返回值
Cake\ElasticSearch\Query
get() ¶ public
get(mixed $primaryKey, array|string $finder = 'all', Psr\SimpleCache\CacheInterface|string|null $cache = null, Closure|string|null $cacheKey = null, mixed ...$args): Cake\ElasticSearch\Document
通过其主键找到记录后返回单个记录,如果未找到记录,此方法将抛出异常。
选项数组中的任何键都将作为 GET 参数翻译,当通过其 ID 获取文档时。当您需要指定父项或路由时,这通常很有用。
此方法不会触发 Model.beforeFind 回调,因为它不使用查询进行搜索,而使用更快的键查找搜索索引。
参数
-
mixed
$primaryKey 文档的主键。
-
array|string
$finder optional 查找器名称或选项。提供查找器名称不受支持。
-
Psr\SimpleCache\CacheInterface|string|null
$cache optional 缓存结果不受支持。
-
Closure|string|null
$cacheKey optional -
mixed
...$args
返回值
Cake\ElasticSearch\Document
抛出
Elastica\Exception\NotFoundException
如果不存在具有此 ID 的文档。
getConnection() ¶ public
getConnection(): Cake\ElasticSearch\Datasource\Connection
返回连接实例。
返回值
Cake\ElasticSearch\Datasource\Connection
getEventManager() ¶ public
getEventManager(): Cake\Event\EventManagerInterface
返回此对象的 Cake\Event\EventManager 管理器实例。
您可以使用此实例为对象事件注册任何新的侦听器或回调,或者创建您自己的事件并随意触发它们。
返回值
Cake\Event\EventManagerInterface
getValidator() ¶ public
getValidator(string|null $name = null): Cake\Validation\Validator
返回标记为 $name 的验证规则。可以有多个不同命名的验证集,这在您需要在系统中从不同例程保存时使用不同的规则时很有用。
如果先前未设置验证器,则此方法将使用类内部的方法构建一个验证器。
例如,如果您希望创建一个名为“forSubscription”的验证集,则需要在 Table 子类中创建如下方法:
public function validationForSubscription($validator)
{
return $validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->requirePresence('username');
}
$validator = $this->getValidator('forSubscription');
如果您希望有一个在未指定其他集的情况下适用的验证集,您可以在 Table 子类中的 validationDefault
中实现此方法。
如果没有提供 $name 参数,则将返回默认验证器。您可以在 DEFAULT_VALIDATOR
类常量中配置默认验证器名称。
参数
-
string|null
$name optional 要返回的验证集的名称。
返回值
Cake\Validation\Validator
hasValidator() ¶ public
hasValidator(string $name): bool
检查是否已设置验证器。
参数
-
string
$name 验证器的名称。
返回值
bool
implementedEvents() ¶ public
implementedEvents(): array<string, mixed>
获取此索引感兴趣的回调。
通过实现传统方法,假定 Index 类对相关事件感兴趣。
如果您需要添加非传统事件侦听器,或者希望您的索引侦听非标准事件,请覆盖此方法。
传统方法映射为:
- Model.beforeMarshal => beforeMarshal
- Model.beforeFind => beforeFind
- Model.beforeSave => beforeSave
- Model.afterSave => afterSave
- Model.beforeDelete => beforeDelete
- Model.afterDelete => afterDelete
- Model.beforeRules => beforeRules
- Model.afterRules => afterRules
返回值
array<string, mixed>
initialize() ¶ public
initialize(array $config): void
初始化索引实例。在构造函数之后调用。
您可以使用此方法定义嵌入式文档,定义验证并执行您需要的任何其他初始化逻辑。
public function initialize(array $config)
{
$this->embedMany('Comments');
}
参数
-
array
$config 传递给构造函数的配置选项
返回值
void
marshaller() ¶ public
marshaller(): Cake\ElasticSearch\Marshaller
获取此索引实例的编组器。
返回值
Cake\ElasticSearch\Marshaller
newEmptyEntity() ¶ public
newEmptyEntity(): Cake\Datasource\EntityInterface
这将创建一个新的实体对象。
小心:这不会触发任何字段验证。此实体可以作为空记录持久化,而不会出现验证错误。在保存之前始终修补必要的字段。
返回值
Cake\Datasource\EntityInterface
newEntities() ¶ public
newEntities(array $data, array<string, mixed> $options = []): arrayCake\Datasource\EntityInterface>
从数组中创建实体列表 + 关联实体。
当将请求数据重新水化为实体时,这非常有用。例如,在您的控制器代码中
$articles = $this->Articles->newEntities($this->request->data());
然后可以迭代和保存水化的实体。
参数
-
array
$data 用于构建实体的数据。
-
array<string, mixed>
$options optional 用于对象水化的选项列表。
返回值
arrayCake\Datasource\EntityInterface>
newEntity() ¶ public
newEntity(array $data, array<string, mixed> $options = []): Cake\Datasource\EntityInterface
从数组中创建新的实体 + 关联实体。
当将请求数据重新水化为实体时,这非常有用。例如,在您的控制器代码中
$article = $this->Articles->newEntity($this->request->data());
水化的实体将在保存实体时根据数据库中存在的主键数据正确地进行插入/更新。在保存实体之前,它将是一个分离的记录。
参数
-
array
$data 用于构建实体的数据。
-
array<string, mixed>
$options optional 用于对象水化的选项列表。
返回值
Cake\Datasource\EntityInterface
patchEntities() ¶ public
patchEntities(iterableCake\Datasource\EntityInterface> $entities, array $data, array<string, mixed> $options = []): arrayCake\Datasource\EntityInterface>
将 $data
中传递的每个元素合并到 $entities
中找到的实体中,尊重实体上配置的可访问字段。合并是通过匹配 $data
和 $entities
中每个元素的主键来完成的。
当使用请求数据编辑现有实体列表时,这非常有用
$article = $this->Articles->patchEntities($articles, $this->request->data());
参数
-
iterableCake\Datasource\EntityInterface>
$entities 将合并数据的实体
-
array
$data 要合并到实体中的数组列表
-
array<string, mixed>
$options optional 用于对象水化的选项列表。
返回值
arrayCake\Datasource\EntityInterface>
patchEntity() ¶ public
patchEntity(Cake\Datasource\EntityInterface $entity, array $data, array<string, mixed> $options = []): Cake\Datasource\EntityInterface
将传递的 $data
合并到 $entity
中,尊重实体上配置的可访问字段。在被更改后返回相同的实体。
当使用请求数据编辑现有实体时,这非常有用
$article = $this->Articles->patchEntity($article, $this->request->data());
参数
-
Cake\Datasource\EntityInterface
$entity 将合并数据的实体
-
array
$data 要合并到实体中的键值字段列表
-
array<string, mixed>
$options optional 用于对象水化的选项列表。
返回值
Cake\Datasource\EntityInterface
rulesChecker() ¶ public
rulesChecker(): Cake\Datasource\RulesChecker
返回此实例的 RulesChecker。
RulesChecker 对象用于测试实体对规则的有效性,这些规则可能涉及复杂的逻辑或需要从相关数据源中获取的数据。
返回值
Cake\Datasource\RulesChecker
另请参阅
save() ¶ public
save(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): Cake\Datasource\EntityInterface|false
根据标记为脏的字段持久保存实体,并在成功保存后返回相同的实体,或在出现任何错误时返回 false。
触发 Model.beforeSave
和 Model.afterSave
事件。
选项
checkRules
默认值为 true。在删除记录之前检查删除规则。routing
默认值为 null。如果设置,则用作存储文档的路由键。
参数
-
Cake\Datasource\EntityInterface
$entity 要保存的实体
-
array<string, mixed>
$options optional 用于事件的选项数组
返回值
Cake\Datasource\EntityInterface|false
saveMany() ¶ public
saveMany(array $entities, array $options = []): bool
根据标记为脏的字段持久保存实体列表,并在成功保存后返回相同的实体,或在出现任何错误时返回 false。触发 Model.beforeSave
和 Model.afterSave
事件。
选项
checkRules
默认值为 true。在删除记录之前检查删除规则。routing
默认值为 null。如果设置,则用作存储文档的路由键。
参数
-
array
$entities 实体数组
-
array
$options optional 用于事件的选项数组
返回值
bool
schema() ¶ public
schema(): Cake\ElasticSearch\Datasource\MappingSchema
从索引类型获取映射数据。
这将在第一次调用此方法时从 Elasticsearch 获取架构。
返回值
Cake\ElasticSearch\Datasource\MappingSchema
setConnection() ¶ public
setConnection(Cake\ElasticSearch\Datasource\Connection $conn): $this
设置连接实例。
参数
-
Cake\ElasticSearch\Datasource\Connection
$conn 新的连接实例
返回值
$this
setEntityClass() ¶ public
setEntityClass(string $name): $this
设置用来为此索引提取文档的类。
参数
-
string
$name 要使用的类的名称
返回值
$this
抛出
Cake\ElasticSearch\Exception\MissingDocumentException
当找不到实体类时
setEventManager() ¶ public
setEventManager(Cake\Event\EventManagerInterface $eventManager): $this
返回此对象的 Cake\Event\EventManagerInterface 实例。
您可以使用此实例为对象事件注册任何新的侦听器或回调,或者创建您自己的事件并随意触发它们。
参数
-
Cake\Event\EventManagerInterface
$eventManager 要设置的 eventManager
返回值
$this
setRegistryAlias() ¶ public
setRegistryAlias(string $registryAlias): $this
设置用于创建此索引实例的索引注册表键。
参数
-
string
$registryAlias 用于访问此对象的键。
返回值
$this
setValidator() ¶ public
setValidator(string $name, Cake\Validation\Validator $validator): $this
此方法在给定名称下存储自定义验证器。
您可以自己构建对象并将其存储在您的对象中
$validator = new \Cake\Validation\Validator();
$validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->allowEmpty('bio');
$this->setValidator('forSubscription', $validator);
参数
-
string
$name 要设置的验证器的名称。
-
Cake\Validation\Validator
$validator 要设置的验证器对象。
返回值
$this
updateAll() ¶ public
updateAll(Closure|array|string $fields, Closure|array|string|null $conditions): int
更新所有匹配的记录。
根据 $conditions 将 $fields 设置为提供的值。此方法 *不会* 触发 beforeSave/afterSave 事件。如果您需要这些,请首先加载一组记录并更新它们。
参数
-
Closure|array|string
$fields 字段 => 新值的哈希。
-
Closure|array|string|null
$conditions 一组条件,类似于与 find() 一起使用的条件。
返回值
int
validationDefault() ¶ public
validationDefault(Cake\Validation\Validator $validator): Cake\Validation\Validator
返回默认验证器对象。子类可以覆盖此函数以向验证器对象添加默认验证集。
参数
-
Cake\Validation\Validator
$validator 可以修改以添加一些规则的验证器。
返回值
Cake\Validation\Validator
validationMethodExists() ¶ protected
validationMethodExists(string $name): bool
检查验证方法是否存在。
参数
-
string
$name 验证方法名称。
返回值
bool
属性详细信息
$_eventManager ¶ protected
此对象用来分派内部事件的 Cake\Event\EventManager 实例。
类型
Cake\Event\EventManagerInterface|null