类 FailedJobsTable
FailedJobs 模型
常量
-
字符串
BUILD_VALIDATOR_EVENT ¶'Model.buildValidator'
验证器构建时分派的事件名称。
-
字符串
DEFAULT_VALIDATOR ¶'default'
默认验证集的名称。
-
class-stringCake\ORM\Rule\IsUnique>
IS_UNIQUE_CLASS ¶IsUnique::class
使用的 IsUnique 类名。
-
class-stringCake\ORM\RulesChecker>
RULES_CLASS ¶RulesChecker::class
使用的规则类名。
-
字符串
VALIDATOR_PROVIDER_NAME ¶'table'
此对象分配给验证器的别名。
属性摘要
-
$_alias protected
字符串|null
赋予此特定实例的人类可读名称。多个代表同一数据库表的对象可以通过使用不同的别名来存在。
-
$_associations protected
Cake\ORM\AssociationCollection
此表的关联容器。
-
$_behaviors protected
Cake\ORM\BehaviorRegistry
此表的 BehaviorRegistry
-
$_connection protected
Cake\Database\Connection|null
连接实例
-
$_displayField protected
list<string>|string|null
代表行的人类可读表示的字段名称
-
$_entityClass protected
字符串|null
代表此表单行的类的名称
-
$_eventClass protected
字符串
新事件对象的默认类名。
-
$_eventManager protected
Cake\Event\EventManagerInterface|null
此对象正在使用的 Cake\Event\EventManager 实例,用于分派内部事件。
-
$_primaryKey protected
list<string>|string|null
代表表中主键的字段名称
-
$_registryAlias protected
字符串|null
用于创建此表对象的注册表键
-
$_rulesChecker protected
Cake\Datasource\RulesChecker|null
要应用于此表保存的实体的域规则
-
$_schema protected
Cake\Database\Schema\TableSchemaInterface|null
包含此表字段描述的模式对象
-
$_table protected
字符串|null
可以在数据库中找到的表的名称
-
$_validatorClass protected
字符串
验证器类。
-
$_validators protected
arrayCake\Validation\Validator>
按名称索引的验证对象列表
-
$queryFactory protected
QueryFactory
方法摘要
-
__call() public
处理行为委托和动态查找器。
-
__construct() public
初始化一个新实例
-
__debugInfo() public
返回一个数组,该数组可用于描述此对象的内部状态。
-
__get() public
如果存在,则返回以传递的值命名的关联,否则抛出异常。
-
__isset() public
返回此表中是否存在以传递的值命名的关联。
-
_deleteMany() protected
-
_dynamicFinder() protected
提供动态 findBy 和 findAllBy 方法。
-
_executeTransaction() protected
处理在事务中执行工作者的逻辑。
-
_getFindOrCreateQuery() protected
获取 findOrCreate() 的查询对象。
-
_insert() protected
辅助函数,用于处理将实体的数据插入表中。
-
_newId() protected
为新记录生成主键值。
-
_onSaveSuccess() protected
处理子关联的保存,并在为该表成功保存实体后执行 afterSave 逻辑。
-
_processDelete() protected
执行删除操作。
-
_processFindOrCreate() protected
根据传递的选项执行实体的实际查找和/或创建。
-
_processSave() protected
根据传递的选项执行实体的实际保存。
-
_saveMany() protected
-
_setFieldMatchers() protected
在选项数组中,检查
$keys
中描述的键是否为数组,并将值更改为闭包,这些闭包将在传递行时连接值数组中的每个属性。 -
_transactionCommitted() protected
检查调用者是否已对事务执行提交操作。
-
_update() protected
辅助函数,用于处理将实体的数据更新到表中。
-
addAssociations() public
设置多个关联。
-
addBehavior() public
添加行为。
-
addBehaviors() public
将一系列行为添加到表的行为集合中。
-
aliasField() public
使用表的当前别名对字段进行别名化。
-
associations() public
获取此表的关联集合。
-
behaviors() public
返回此表的行为注册表。
-
belongsTo() public
在该表和目标表之间创建一个新的 BelongsTo 关联。 “属于”关联是 N-1 关系,其中该表是 N 方,并且对于该表中的每个记录,目标表中都有一个关联记录。
-
belongsToMany() public
在该表和目标表之间创建一个新的 BelongsToMany 关联。“属于多”关联是 M-N 关系。
-
buildRules() public
在修改提供的规则检查器后,返回一个规则检查器对象。
-
callFinder() public
调用查找器方法并将其应用于传递的查询。
-
checkAliasLengths() protected
检查用于查询的所有表名 + 列名组合是否适合数据库驱动程序允许的最大长度。
-
checkRules() public
返回传递的实体是否符合规则检查器中存储的所有规则。
-
createValidator() protected
使用类中的自定义方法创建验证器。
-
defaultConnectionName() public static
获取默认连接名称。
-
delete() public
删除单个实体。
-
deleteAll() public
删除与提供条件匹配的所有记录。
-
deleteMany() public @method
删除表中的多个实体。
-
deleteManyOrFail() public @method
删除表中的多个实体。
-
deleteOrFail() public
尝试删除实体,如果实体是新的、没有主键值、应用程序规则检查失败或删除被回调中止,则抛出 PersistenceFailedException。
-
deleteQuery() public
创建新的删除查询
-
dispatchEvent() public
用于创建和分派事件的包装器。
-
exists() public
如果此存储库中存在与指定条件匹配的任何记录,则返回 true。
-
find() public
为该存储库创建一个新的查询,并根据所选搜索类型应用一些默认值。
-
findAll() public
按原样返回查询。
-
findAssociation() protected
如果存在,则返回为指定别名配置的关联对象。
-
findList() public
设置查询对象,以便结果显示为索引数组,这对任何需要列表的地方都有用,例如填充输入选择框。
-
findOrCreate() public @method
查找现有记录或创建新记录。
-
findThreaded() public
此查找器的结果将是一个嵌套数组,如果您想使用模型数据的 parent_id 字段来构建嵌套结果,则此方法很合适。
-
get() public @method
在通过主键查找记录后返回单个记录,如果未找到记录,此方法将抛出异常。
-
getAlias() public
返回表别名。
-
getAssociation() public
返回为指定别名配置的关联对象。
-
getBehavior() public
从注册表获取行为。
-
getConnection() public
返回连接实例。
-
getDisplayField() public
返回显示字段。
-
getEntityClass() public
返回用于为此表填充行的类。
-
getEventManager() public
返回此对象的 Cake\Event\EventManager 管理器实例。
-
getPrimaryKey() public
返回主键字段名称。
-
getRegistryAlias() public
返回用于创建此表实例的表注册表键。
-
getSchema() public
返回描述此表属性的架构表对象。
-
getTable() public
返回数据库表名。
-
getValidator() public
返回标记为 $name 的验证规则。可以有多个不同命名的验证集,当您需要在系统中从不同例程保存时使用不同的规则时,这很有用。
-
hasAssociation() public
检查此 Table 实例上是否存在特定关联。
-
hasBehavior() public
检查是否已加载具有给定别名的行为。
-
hasField() public
测试 Table 是否具有特定字段/列。
-
hasFinder() public
如果表存在查找器,则返回 true。
-
hasMany() public
在此表和目标表之间创建新的 HasMany 关联。 “has many” 关联是 1-N 关系。
-
hasOne() public
在此表和目标表之间创建新的 HasOne 关联。 “has one” 关联是 1-1 关系。
-
hasValidator() public
检查是否已设置验证器。
-
implementedEvents() public
获取此表感兴趣的模型回调。
-
initialize() public
初始化方法
-
insertQuery() public
创建一个新的插入查询
-
invokeFinder() public
-
loadInto() public
通过在数据库中执行额外的查询并将结果合并到相应的属性中,在传递的实体或实体列表中加载指定的关联。
-
marshaller() public
获取用于将数组数据编组/转换为对象的。
-
newEmptyEntity() public @method
这将创建一个新的实体对象。
-
newEntities() public @method
从数组创建实体 + 关联实体列表。
-
newEntity() public @method
从数组创建新的实体 + 关联实体。
-
patchEntities() public @method
将
$data
中传递的每个元素合并到$entities
中找到的实体中,尊重实体上配置的可访问字段。合并是通过匹配$data
和$entities
中每个元素的主键来完成的。 -
patchEntity() public @method
将传递的
$data
合并到$entity
中,尊重实体上配置的可访问字段。在修改后返回相同的实体。 -
query() public
为表创建一个新的 SelectQuery 实例。
-
removeBehavior() public
从此表的行为注册表中删除行为。
-
rulesChecker() public
返回此实例的 RulesChecker。
-
save() public @method
根据标记为脏的字段保存实体,并在成功保存后返回相同的实体,或在出现任何错误时返回 false。
-
saveMany() public @method
保存表中的多个实体。
-
saveManyOrFail() public @method
保存表中的多个实体。
-
saveOrFail() public @method
尝试保存实体,如果应用程序规则检查失败,实体包含错误或保存被回调中止,则抛出 PersistenceFailedException。
-
selectQuery() public
创建一个新的选择查询
-
setAlias() public
设置表别名。
-
setConnection() public
设置连接实例。
-
setDisplayField() public
设置显示字段。
-
setEntityClass() public
设置用于为此表填充行的类。
-
setEventManager() public
返回此对象的 Cake\Event\EventManagerInterface 实例。
-
setPrimaryKey() public
设置主键字段名称。
-
setRegistryAlias() public
设置用于创建此表实例的表注册表键。
-
setSchema() public
设置描述此表属性的架构表对象。
-
setTable() public
设置数据库表名。
-
setValidator() public
此方法在给定名称下存储自定义验证器。
-
subquery() public
创建一个新的 Query 实例,其中字段自动别名禁用。
-
updateAll() public
更新所有匹配的记录。
-
updateQuery() public
创建一个新的更新查询
-
validateUnique() public
用于检查列值唯一性的验证器方法。这旨在与验证 API 一起使用,而不是直接调用。
-
validationDefault() public
默认验证规则。
-
validationMethodExists() protected
检查验证方法是否存在。
方法详情
__call() ¶ public
__call(string $method, array $args): mixed
处理行为委托和动态查找器。
如果您的 Table 使用任何行为,您可以像它们是 Table 对象上的一样调用它们。
参数
-
string
$method 要调用的方法的名称
-
array
$args 传递给函数的参数列表
返回值
mixed
抛出
BadMethodCallException
__construct() ¶ public
__construct(array<string, mixed> $config = [])
初始化一个新实例
$config 数组理解以下键
- table: 要表示的数据库表名
- alias: 要分配给此表的别名(默认值为表名)
- connection: 要使用的连接实例
- entityClass: 将代表此表中行的实体类的完全命名空间类名。
- schema: 一个 \Cake\Database\Schema\TableSchemaInterface 对象或可以传递给它的数组。
- eventManager: 用于内部事件的事件管理器实例
- behaviors: 一个 BehaviorRegistry。通常不用于测试之外。
- associations: 一个 AssociationCollection 实例。
- validator: 一个 Validator 实例,它被分配为“默认”验证集,或者是一个关联数组,其中键是验证集的名称,值是 Validator 实例。
参数
-
array<string, mixed>
$config optional 此表的选项列表。
__debugInfo() ¶ public
__debugInfo(): array<string, mixed>
返回一个数组,该数组可用于描述此对象的内部状态。
返回值
array<string, mixed>
__get() ¶ public
__get(string $property): Cake\ORM\Association
如果存在,则返回以传递的值命名的关联,否则抛出异常。
参数
-
string
$property 关联名称
返回值
Cake\ORM\Association
抛出
Cake\Database\Exception\DatabaseException
如果不存在具有此名称的关联
__isset() ¶ public
__isset(string $property): bool
返回此表中是否存在以传递的值命名的关联。
参数
-
string
$property 关联名称
返回值
bool
_deleteMany() ¶ protected
_deleteMany(iterableCake\Datasource\EntityInterface> $entities, array<string, mixed> $options = []): Cake\Datasource\EntityInterface|null
参数
-
iterableCake\Datasource\EntityInterface>
$entities 要删除的实体。
-
array<string, mixed>
$options optional 使用的选项。
返回值
Cake\Datasource\EntityInterface|null
_dynamicFinder() ¶ protected
_dynamicFinder(string $method, array $args): Cake\ORM\Query\SelectQuery
提供动态 findBy 和 findAllBy 方法。
参数
-
string
$method 触发的函数名。
-
array
$args 传递给函数的参数列表。
返回值
Cake\ORM\Query\SelectQuery
抛出
BadMethodCallException
当缺少参数,或当和 & 或组合使用时。
_executeTransaction() ¶ protected
_executeTransaction(callable $worker, bool $atomic = true): mixed
处理在事务中执行工作者的逻辑。
参数
-
callable
$worker 将在事务中运行的 worker。
-
bool
$atomic optional 是否在数据库事务内执行 worker。
返回值
mixed
_getFindOrCreateQuery() ¶ protected
_getFindOrCreateQuery(Cake\ORM\Query\SelectQuery|callable|array $search): Cake\ORM\Query\SelectQuery
获取 findOrCreate() 的查询对象。
参数
-
Cake\ORM\Query\SelectQuery|callable|array
$search 通过此标准查找现有记录。
返回值
Cake\ORM\Query\SelectQuery
_insert() ¶ protected
_insert(Cake\Datasource\EntityInterface $entity, array $data): Cake\Datasource\EntityInterface|false
辅助函数,用于处理将实体的数据插入表中。
参数
-
Cake\Datasource\EntityInterface
$entity 从 $data 中提取主题实体
-
array
$data 需要保存的实际数据
返回值
Cake\Datasource\EntityInterface|false
抛出
Cake\Database\Exception\DatabaseException
如果未提供所有主键,或者当表具有复合主键时无法生成主键。或者当表没有主键时。
_newId() ¶ protected
_newId(list<string> $primary): string|null
为新记录生成主键值。
默认情况下,如果可能,此方法使用类型系统生成新的主键值。如果对 ID 生成有特定要求,可以覆盖此方法。
注意:ORM 不会为复合主键生成主键值。可以在表类中覆盖 _newId() 方法。
参数
-
list<string>
$primary 用于获取新 ID 的主键列。
返回值
字符串|null
_onSaveSuccess() ¶ protected
_onSaveSuccess(Cake\Datasource\EntityInterface $entity, ArrayObject<string, mixed> $options): bool
处理子关联的保存,并在为该表成功保存实体后执行 afterSave 逻辑。
参数
-
Cake\Datasource\EntityInterface
$entity 要保存的实体。
-
ArrayObject<string, mixed>
$options 保存操作使用的选项。
返回值
bool
抛出
Cake\ORM\Exception\RolledbackTransactionException
如果在 afterSave 事件中中止了事务。
_processDelete() ¶ protected
_processDelete(Cake\Datasource\EntityInterface $entity, ArrayObject<string, mixed> $options): bool
执行删除操作。
将删除提供的实体。将从任何依赖关联中删除行,并清除 BelongsToMany 关联的联接表。
参数
-
Cake\Datasource\EntityInterface
$entity 要删除的实体。
-
ArrayObject<string, mixed>
$options 删除的选项。
返回值
bool
抛出
InvalidArgumentException
如果传递的实体没有主键值。
_processFindOrCreate() ¶ protected
_processFindOrCreate(Cake\ORM\Query\SelectQuery|callable|array $search, callable|null $callback = null, array<string, mixed> $options = []): Cake\Datasource\EntityInterface|array
根据传递的选项执行实体的实际查找和/或创建。
参数
-
Cake\ORM\Query\SelectQuery|callable|array
$search 用于查找现有记录的条件,或一个可以自定义查找查询的可调用函数。
-
callable|null
$callback optional 将为新创建的实体调用的回调函数。此回调函数将在实体持久化之前调用。
-
array<string, mixed>
$options optional 保存时使用的选项。
返回值
Cake\Datasource\EntityInterface|array
抛出
Cake\ORM\Exception\PersistenceFailedException
当实体无法保存时。
InvalidArgumentException
_processSave() ¶ protected
_processSave(Cake\Datasource\EntityInterface $entity, ArrayObject<string, mixed> $options): Cake\Datasource\EntityInterface|false
根据传递的选项执行实体的实际保存。
参数
-
Cake\Datasource\EntityInterface
$entity 要保存的实体。
-
ArrayObject<string, mixed>
$options 保存操作使用的选项。
返回值
Cake\Datasource\EntityInterface|false
抛出
Cake\Database\Exception\DatabaseException
当实体缺少某些主键时。
Cake\ORM\Exception\RolledbackTransactionException
如果在 afterSave 事件中中止了事务。
_saveMany() ¶ protected
_saveMany(iterableCake\Datasource\EntityInterface> $entities, array<string, mixed> $options = []): iterableCake\Datasource\EntityInterface>
参数
-
iterableCake\Datasource\EntityInterface>
$entities 要保存的实体。
-
array<string, mixed>
$options optional 为每个实体调用 Table::save() 时使用的选项。
返回值
iterableCake\Datasource\EntityInterface>
抛出
Cake\ORM\Exception\PersistenceFailedException
如果实体无法保存。
Exception
如果实体无法保存。
_setFieldMatchers() ¶ protected
_setFieldMatchers(array<string, mixed> $options, list<string> $keys): array<string, mixed>
在选项数组中,检查 $keys
中描述的键是否为数组,并将值更改为闭包,这些闭包将在传递行时连接值数组中的每个属性。
这是一个辅助函数,用于结果格式化程序,这些格式化程序可以在比较值时接受复合键。
参数
-
array<string, mixed>
$options 传递给查找器的原始选项。
-
list<string>
$keys 要检查 $options 中的键,以从关联的值构建匹配器。
返回值
array<string, mixed>
_transactionCommitted() ¶ protected
_transactionCommitted(bool $atomic, bool $primary): bool
检查调用者是否已对事务执行提交操作。
参数
-
bool
$atomic 如果使用了原子事务,则为 true。
-
bool
$primary 如果使用了主键,则为 true。
返回值
bool
_update() ¶ protected
_update(Cake\Datasource\EntityInterface $entity, array $data): Cake\Datasource\EntityInterface|false
辅助函数,用于处理将实体的数据更新到表中。
参数
-
Cake\Datasource\EntityInterface
$entity 从 $data 中提取主题实体
-
array
$data 需要保存的实际数据
返回值
Cake\Datasource\EntityInterface|false
抛出
InvalidArgumentException
当缺少主键数据时。
addAssociations() ¶ public
addAssociations(array $params): $this
设置多个关联。
它接受一个包含按关联类型索引的表名集的数组作为参数。
$this->Posts->addAssociations([
'belongsTo' => [
'Users' => ['className' => 'App\Model\Table\UsersTable']
],
'hasMany' => ['Comments'],
'belongsToMany' => ['Tags']
]);
每个关联类型都接受多个关联,其中键是别名,值是关联配置数据。如果使用数字键,则值将被视为关联别名。
参数
-
array
$params 要绑定的关联集(按关联类型索引)。
返回值
$this
另请参阅
\Cake\ORM\Table::hasOne()
\Cake\ORM\Table::hasMany()
\Cake\ORM\Table::belongsToMany()
addBehavior() ¶ public
addBehavior(string $name, array<string, mixed> $options = []): $this
添加行为。
向此表的行为集合添加行为。行为提供了一种简单的方法来创建水平可重用的功能,这些功能可以提供类似特征的功能,并允许侦听事件。
示例
加载行为,并使用一些设置。
$this->addBehavior('Tree', ['parent' => 'parentId']);
行为通常在 Table::initialize() 期间加载。
参数
-
string
$name 行为的名称。可以是简短的类引用。
-
array<string, mixed>
$options optional 行为要使用的选项。
返回值
$this
抛出
RuntimeException
如果正在重新加载行为。
另请参阅
addBehaviors() ¶ public
addBehaviors(array $behaviors): $this
将一系列行为添加到表的行为集合中。
示例
$this->addBehaviors([
'Timestamp',
'Tree' => ['level' => 'level'],
]);
参数
-
array
$behaviors 要加载的所有行为。
返回值
$this
抛出
RuntimeException
如果正在重新加载行为。
aliasField() ¶ public
aliasField(string $field): string
使用表的当前别名对字段进行别名化。
如果字段已设置别名,则将执行无操作。
参数
-
string
$field 要设置别名的字段。
返回值
字符串
associations() ¶ public
associations(): Cake\ORM\AssociationCollection
获取此表的关联集合。
返回值
Cake\ORM\AssociationCollection
behaviors() ¶ public
behaviors(): Cake\ORM\BehaviorRegistry
返回此表的行为注册表。
返回值
Cake\ORM\BehaviorRegistry
belongsTo() ¶ public
belongsTo(string $associated, array<string, mixed> $options = []): Cake\ORM\Association\BelongsTo
在该表和目标表之间创建一个新的 BelongsTo 关联。 “属于”关联是 N-1 关系,其中该表是 N 方,并且对于该表中的每个记录,目标表中都有一个关联记录。
目标表可以通过其名称推断出来,该名称在第一个参数中提供,或者可以传递要实例化的类名,或者直接传递其实例。
选项数组接受以下键:
- className:目标表对象的类名
- targetTable:要用作目标表的表对象的实例
- foreignKey:用作外键的字段的名称,如果为 false,则不会使用任何外键
- conditions:包含用于过滤联接的条件列表的数组
- joinType:要使用的联接类型(例如 INNER)
- strategy:要使用的加载策略。支持 "join" 和 "select"。
- finder:从该关联加载记录时要使用的查找器方法。默认为 "all"。当策略为 "join" 时,只使用查找器中的字段、包含和 where 条件。
此方法将返回构建的关联对象。
参数
-
string
$associated 目标表的别名。这用于唯一标识关联。
-
array<string, mixed>
$options optional 配置关联定义的选项列表
返回值
Cake\ORM\Association\BelongsTo
belongsToMany() ¶ public
belongsToMany(string $associated, array<string, mixed> $options = []): Cake\ORM\Association\BelongsToMany
在该表和目标表之间创建一个新的 BelongsToMany 关联。“属于多”关联是 M-N 关系。
目标表可以通过其名称推断出来,该名称在第一个参数中提供,或者可以传递要实例化的类名,或者直接传递其实例。
选项数组接受以下键:
- className:目标表对象的类名。
- targetTable:要用作目标表的表对象的实例。
- foreignKey:用作外键的字段的名称。
- targetForeignKey:用作目标外键的字段的名称。
- joinTable:表示这两个表之间链接的表的名称。
- through:如果你选择使用已实例化的链接表,则将此键设置为已配置的 Table 实例,该实例包含指向该关联中源表和目标表两者的关联。
- dependent:设置为 false,如果你不希望在删除拥有记录时删除连接表记录。
- cascadeCallbacks:如果希望 CakePHP 在级联删除时触发回调函数,则设置为 true。如果为 false,则 ORM 将使用 deleteAll() 删除数据。当为 true 时,将加载联接/连接表记录,然后删除它们。
- conditions:包含用于过滤联接的条件列表的数组。
- sort:返回该关联结果的顺序。
- strategy:用于选择结果的策略,可以是 "select" 或 "subquery"。如果选择了 "subquery",则用于在源表中返回结果的查询将用作获取目标表中的行的条件。
- saveStrategy:可以是 "append" 或 "replace"。表示用于保存关联实体的模式。前者只会创建关联关系双方的新的链接,而后者会执行擦除和替换以在保存时创建传递实体之间的链接。
- strategy:要使用的加载策略。支持 "select" 和 "subquery"。
- finder:从该关联加载记录时要使用的查找器方法。默认为 "all"。
此方法将返回构建的关联对象。
参数
-
string
$associated 目标表的别名。这用于唯一标识关联。
-
array<string, mixed>
$options optional 配置关联定义的选项列表
返回值
Cake\ORM\Association\BelongsToMany
buildRules() ¶ public
buildRules(Cake\Datasource\RulesChecker $rules): Cake\ORM\RulesChecker
在修改提供的规则检查器后,返回一个规则检查器对象。
子类应该覆盖此方法以初始化要应用于由该实例保存的实体的规则。
参数
-
Cake\Datasource\RulesChecker
$rules 要修改的规则对象。
返回值
Cake\ORM\RulesChecker
callFinder() ¶ public
callFinder(string $type, Cake\ORM\Query\SelectQuery<TSubject> $query, mixed ...$args): Cake\ORM\Query\SelectQuery<TSubject>
调用查找器方法并将其应用于传递的查询。
参数
-
string
$type 要调用的查找器的名称。
-
Cake\ORM\Query\SelectQuery<TSubject>
$query 要将查找器选项应用到的查询对象。
-
mixed
...$args 与查找器特定参数匹配的参数。
返回值
Cake\ORM\Query\SelectQuery<TSubject>
抛出
BadMethodCallException
checkAliasLengths() ¶ protected
checkAliasLengths(): void
检查用于查询的所有表名 + 列名组合是否适合数据库驱动程序允许的最大长度。
返回值
void
抛出
Cake\Database\Exception\DatabaseException
当别名组合过长时。
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
defaultConnectionName() ¶ public static
defaultConnectionName(): string
获取默认连接名称。
此方法用于在通过 TableLocator 创建实例而没有连接的情况下获取回退连接名称。
返回值
字符串
另请参阅
delete() ¶ public
delete(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool
删除单个实体。
对于 HasMany 和 HasOne 关联,将根据 dependent 选项删除记录。BelongsToMany 关联中的连接表记录将始终被删除。在定义关联时,可以使用 cascadeCallbacks
选项来更改关联数据的删除方式。
选项
atomic
默认为 true。当为 true 时,删除发生在事务中。checkRules
默认为 true。在删除记录之前检查删除规则。
事件
Model.beforeDelete
在删除发生之前触发。如果停止,删除将中止。接收事件、实体和选项。Model.afterDelete
在删除成功后触发。接收事件、实体和选项。Model.afterDeleteCommit
在原子删除的事务提交后触发。接收事件、实体和选项。
选项参数将在回调期间转换为 \ArrayObject 实例,这允许侦听器修改删除操作中使用的选项。
参数
-
Cake\Datasource\EntityInterface
$entity 要删除的实体。
-
array<string, mixed>
$options optional 删除的选项。
返回值
bool
deleteAll() ¶ public
deleteAll(Cake\Database\Expression\QueryExpressionClosure|array|string|null $conditions): int
删除与提供条件匹配的所有记录。
此方法不会在 beforeDelete/afterDelete 事件之前触发。如果您需要这些事件,请先加载一组记录并将其删除。
此方法不会在关联的cascade
属性上执行。如果您需要级联删除与该方法结合使用,则应使用数据库外键 + ON CASCADE 规则。
参数
-
Cake\Database\Expression\QueryExpressionClosure|array|string|null
$conditions 要使用的条件,接受 Query::where() 可以接受的任何内容。
返回值
int
deleteMany() ¶ public @method
deleteMany(iterable $entities, array<string, mixed> $options = []): iterableCake\Queue\Model\Entity\FailedJob>|false
删除表中的多个实体。
这些记录将在事务中删除,如果任何一条记录由于验证失败或数据库错误而无法删除,则事务将回滚。
参数
-
iterable
$entities -
array<string, mixed>
$options optional
返回值
iterableCake\Queue\Model\Entity\FailedJob>|false
deleteManyOrFail() ¶ public @method
deleteManyOrFail(iterable $entities, array<string, mixed> $options = []): iterableCake\Queue\Model\Entity\FailedJob>
删除表中的多个实体。
这些记录将在事务中删除,如果任何一条记录由于验证失败或数据库错误而无法删除,则事务将回滚。
参数
-
iterable
$entities -
array<string, mixed>
$options optional
返回值
iterableCake\Queue\Model\Entity\FailedJob>
deleteOrFail() ¶ public
deleteOrFail(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): true
尝试删除实体,如果实体是新的、没有主键值、应用程序规则检查失败或删除被回调中止,则抛出 PersistenceFailedException。
参数
-
Cake\Datasource\EntityInterface
$entity 要删除的实体。
-
array<string, mixed>
$options optional 删除的选项。
返回值
true
抛出
Cake\ORM\Exception\PersistenceFailedException
另请参阅
deleteQuery() ¶ public
deleteQuery(): Cake\ORM\Query\DeleteQuery
创建新的删除查询
返回值
Cake\ORM\Query\DeleteQuery
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>
exists() ¶ public
exists(QueryExpression|Closure|array|string|null $conditions): bool
如果此存储库中存在与指定条件匹配的任何记录,则返回 true。
参数
-
QueryExpression|Closure|array|string|null
$conditions
返回值
bool
find() ¶ public
find(string $type = 'all', mixed ...$args): Cake\ORM\Query\SelectQuery
为该存储库创建一个新的查询,并根据所选搜索类型应用一些默认值。
Model.beforeFind 事件
每个 find() 将为所有附加的监听器触发 Model.beforeFind
事件。任何监听器都可以使用 $query 设置有效的结果集
默认情况下,以下特殊命名参数被识别并用作选择查询选项
- fields
- conditions
- order
- limit
- offset
- page
- group
- having
- contain
- join
用法
$query = $articles->find('all',
conditions: ['published' => 1],
limit: 10,
contain: ['Users', 'Comments']
);
使用构建器接口
$query = $articles->find()
->where(['published' => 1])
->limit(10)
->contain(['Users', 'Comments']);
调用查找器
find() 方法是自定义查找器方法的入口点。您可以通过指定类型来调用查找器。
这将调用 findPublished
方法
$query = $articles->find('published');
类型化的查找器参数
查找器必须具有 SelectQuery
实例作为其第一个参数,以及任何其他需要的参数。
这里,查找器“findByCategory” 有一个整数 $category
参数
function findByCategory(SelectQuery $query, int $category): SelectQuery
{
return $query;
}
此查找器可以调用为
$query = $articles->find('byCategory', $category);
或者使用命名参数作为
$query = $articles->find(type: 'byCategory', category: $category);
参数
-
string
$type optional 要执行的查询类型
-
mixed
...$args 与查找器特定参数匹配的参数。
返回值
Cake\ORM\Query\SelectQuery
findAll() ¶ public
findAll(Cake\ORM\Query\SelectQuery $query): Cake\ORM\Query\SelectQuery
按原样返回查询。
默认情况下,findAll() 不应用任何查询子句,您可以在子类中覆盖此方法以修改 find('all')
的工作方式。
参数
-
Cake\ORM\Query\SelectQuery
$query 要查找的查询
返回值
Cake\ORM\Query\SelectQuery
findAssociation() ¶ protected
findAssociation(string $name): Cake\ORM\Association|null
如果存在,则返回为指定别名配置的关联对象。
name 参数也支持点语法来访问更深的关联。
$users = $this->getAssociation('Articles.Comments.Users');
参数
-
string
$name 用于关联的别名。
返回值
Cake\ORM\Association|null
findList() ¶ public
findList(Cake\ORM\Query\SelectQuery $query, Closure|array|string|null $keyField = null, Closure|array|string|null $valueField = null, Closure|array|string|null $groupField = null, string $valueSeparator = ' '): Cake\ORM\Query\SelectQuery
设置查询对象,以便结果显示为索引数组,这对任何需要列表的地方都有用,例如填充输入选择框。
调用此查找器时,传递的字段用于确定什么应该用作数组键、值,以及可选地对结果进行分组。默认情况下,模型的主键用于键,显示字段用作值。
此查找器的结果将采用以下格式
[
1 => 'value for id 1',
2 => 'value for id 2',
4 => 'value for id 4'
]
您可以指定哪个属性用作键,哪个用作值,未指定时,将使用分别调用此表中的 primaryKey
和 displayField
的结果
$table->find('list', keyField: 'name', valueField: 'age');
valueField
也可以是数组,在这种情况下,您还可以指定 valueSeparator
选项来控制如何连接值
$table->find('list', valueField: ['first_name', 'last_name'], valueSeparator: ' | ');
此查找器的结果将采用以下格式
[
1 => 'John | Doe',
2 => 'Steve | Smith'
]
当结果共享一个属性时,可以将其组合成更大的组,您可以通过设置 groupField
来定制用于分组的属性
$table->find('list', groupField: 'category_id');
使用 groupField
时,结果将以这种格式返回
[
'group_1' => [
1 => 'value for id 1',
2 => 'value for id 2',
]
'group_2' => [
4 => 'value for id 4'
]
]
参数
-
Cake\ORM\Query\SelectQuery
$query 要查找的查询
-
Closure|array|string|null
$keyField optional -
Closure|array|string|null
$valueField optional -
Closure|array|string|null
$groupField optional -
string
$valueSeparator optional
返回值
Cake\ORM\Query\SelectQuery
findOrCreate() ¶ public @method
findOrCreate(Cake\ORM\Query\SelectQuery|callable|array $search, ?callable $callback = null, array<string, mixed> $options = []): Cake\Queue\Model\Entity\FailedJob
查找现有记录或创建新记录。
将执行 find() 以使用 $search 中定义的属性查找现有记录。如果记录匹配条件,则将返回第一条记录。
如果找不到记录,则将使用 $search 属性创建一个新的实体。如果提供回调,则将调用它,允许您定义其他默认值。新的实体将被保存并返回。
如果您的查找条件需要自定义排序、关联或条件,则 $search 参数可以是将 Query 作为参数的回调,或者作为 $search 参数传递的 \Cake\ORM\Query\SelectQuery 对象。允许您定制查找结果。
选项
选项数组传递给 save 方法,但以下键除外
- atomic: 是否在数据库事务中执行 find、save 和回调的方法(默认:true)
- defaults: 是否将搜索条件用作新实体的默认值(默认:true)
参数
-
Cake\ORM\Query\SelectQuery|callable|array
$search -
?callable
$callback optional -
array<string, mixed>
$options optional
返回值
Cake\Queue\Model\Entity\FailedJob
findThreaded() ¶ public
findThreaded(Cake\ORM\Query\SelectQuery $query, Closure|array|string|null $keyField = null, Closure|array|string $parentField = 'parent_id', string $nestingKey = 'children'): Cake\ORM\Query\SelectQuery
此查找器的结果将是一个嵌套数组,如果您想使用模型数据的 parent_id 字段来构建嵌套结果,则此方法很合适。
基于其 parent_id 值属于父行的值将使用 children
属性递归地嵌套在父行值中
您可以定制哪些字段用于嵌套结果,默认情况下使用主键和 parent_id
字段。如果您希望更改这些默认值,则需要提供 keyField
、parentField
或 nestingKey
参数
$table->find('threaded', keyField: 'id', parentField: 'ancestor_id', nestingKey: 'children');
参数
-
Cake\ORM\Query\SelectQuery
$query 要查找的查询
-
Closure|array|string|null
$keyField optional 键字段的路径。
-
Closure|array|string
$parentField optional 父字段的路径。
-
string
$nestingKey optional 嵌套子项的键。
返回值
Cake\ORM\Query\SelectQuery
get() ¶ public @method
get(mixed $primaryKey, array|string $finder = 'all', Psr\SimpleCache\CacheInterface|string|null $cache = null, Closure|string|null $cacheKey = null, mixed ...$args): Cake\Queue\Model\Entity\FailedJob
在通过主键查找记录后返回单个记录,如果未找到记录,此方法将抛出异常。
用法
获取文章和一些关系
$article = $articles->get(1, ['contain' => ['Users', 'Comments']]);
参数
-
mixed
$primaryKey -
array|string
$finder optional -
Psr\SimpleCache\CacheInterface|string|null
$cache optional -
Closure|string|null
$cacheKey optional -
mixed
...$args
返回值
Cake\Queue\Model\Entity\FailedJob
getAssociation() ¶ public
getAssociation(string $name): Cake\ORM\Association
返回为指定别名配置的关联对象。
name 参数也支持点语法来访问更深的关联。
$users = $this->getAssociation('Articles.Comments.Users');
请注意,此方法需要关联存在,否则会抛出异常。如果您不确定,请在调用此方法之前使用 hasAssociation()。
参数
-
string
$name 用于关联的别名。
返回值
Cake\ORM\Association
抛出
InvalidArgumentException
getBehavior() ¶ public
getBehavior(string $name): Cake\ORM\Behavior
从注册表获取行为。
参数
-
string
$name 要从注册表中获取的行为别名。
返回值
Cake\ORM\Behavior
抛出
InvalidArgumentException
如果行为不存在。
getConnection() ¶ public
getConnection(): Cake\Database\Connection
返回连接实例。
返回值
Cake\Database\Connection
getEntityClass() ¶ public
getEntityClass(): class-stringCake\Datasource\EntityInterface>
返回用于为此表填充行的类。
返回值
class-stringCake\Datasource\EntityInterface>
getEventManager() ¶ public
getEventManager(): Cake\Event\EventManagerInterface
返回此对象的 Cake\Event\EventManager 管理器实例。
您可以使用此实例向对象事件注册任何新的监听器或回调,或者创建您自己的事件并随意触发它们。
返回值
Cake\Event\EventManagerInterface
getSchema() ¶ public
getSchema(): Cake\Database\Schema\TableSchemaInterface
返回描述此表属性的架构表对象。
返回值
Cake\Database\Schema\TableSchemaInterface
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 可选 要返回的验证集的名称。
返回值
Cake\Validation\Validator
hasAssociation() ¶ public
hasAssociation(string $name): bool
检查此 Table 实例上是否存在特定关联。
name 参数也支持点语法来访问更深的关联。
$hasUsers = $this->hasAssociation('Articles.Comments.Users');
参数
-
string
$name 用于关联的别名。
返回值
bool
hasBehavior() ¶ public
hasBehavior(string $name): bool
检查是否已加载具有给定别名的行为。
参数
-
string
$name 要检查的行为别名。
返回值
bool
hasField() ¶ public
hasField(string $field): bool
测试 Table 是否具有特定字段/列。
委托给模式对象,并使用 Schema\Table 实例检查列是否存在。
参数
-
string
$field 要检查的字段。
返回值
bool
hasFinder() ¶ public
hasFinder(string $type): bool
如果表存在查找器,则返回 true。
参数
-
string
$type 要检查的查找器名称
返回值
bool
hasMany() ¶ public
hasMany(string $associated, array<string, mixed> $options = []): Cake\ORM\Association\HasMany
在此表和目标表之间创建新的 HasMany 关联。 “has many” 关联是 1-N 关系。
目标表可以通过其名称推断出来,该名称在第一个参数中提供,或者可以传递要实例化的类名,或者直接传递其实例。
选项数组接受以下键:
- className:目标表对象的类名
- targetTable:要用作目标表的表对象的实例
- foreignKey:用作外键的字段的名称,如果为 false,则不会使用任何外键
- dependent: 如果希望 CakePHP 在从该表中删除实体时级联删除关联表,则将其设置为 true。关联表上的删除操作不会进一步级联。要获得递归级联,还需要启用
cascadeCallbacks
。如果不想让 CakePHP 删除关联数据,或者正在使用数据库约束,则将其设置为 false。 - cascadeCallbacks: 如果希望 CakePHP 在级联删除时触发回调,则将其设置为 true。如果为 false,ORM 将使用 deleteAll() 删除数据。当为 true 时,将加载记录,然后删除。
- conditions:包含用于过滤联接的条件列表的数组
- sort: 此关联结果的返回顺序
- saveStrategy: 既可以是 'append',也可以是 'replace'。当为 'append' 时,当前记录将附加到数据库中的任何记录。当为 'replace' 时,当前集合中不存在的关联记录将被删除。如果外键是可空列,或者如果
dependent
为 true,记录将成为孤儿。 - strategy:用于选择结果的策略,可以是 "select" 或 "subquery"。如果选择了 "subquery",则用于在源表中返回结果的查询将用作获取目标表中的行的条件。
- finder:从该关联加载记录时要使用的查找器方法。默认为 "all"。
此方法将返回构建的关联对象。
参数
-
string
$associated 目标表的别名。这用于唯一标识关联。
-
array<string, mixed>
$options optional 配置关联定义的选项列表
返回值
Cake\ORM\Association\HasMany
hasOne() ¶ public
hasOne(string $associated, array<string, mixed> $options = []): Cake\ORM\Association\HasOne
在此表和目标表之间创建新的 HasOne 关联。 “has one” 关联是 1-1 关系。
目标表可以通过其名称推断出来,该名称在第一个参数中提供,或者可以传递要实例化的类名,或者直接传递其实例。
选项数组接受以下键:
- className:目标表对象的类名
- targetTable:要用作目标表的表对象的实例
- foreignKey:用作外键的字段的名称,如果为 false,则不会使用任何外键
- dependent: 如果希望 CakePHP 在从该表中删除实体时级联删除关联表,则将其设置为 true。关联表上的删除操作不会进一步级联。要获得递归级联,还需要启用
cascadeCallbacks
。如果不想让 CakePHP 删除关联数据,或者正在使用数据库约束,则将其设置为 false。 - cascadeCallbacks: 如果希望 CakePHP 在级联删除时触发回调,则将其设置为 true。如果为 false,ORM 将使用 deleteAll() 删除数据。当为 true 时,将加载记录,然后删除。
- conditions:包含用于过滤联接的条件列表的数组
- joinType: 要使用的连接类型(例如 LEFT)
- strategy:要使用的加载策略。支持 "join" 和 "select"。
- finder:从该关联加载记录时要使用的查找器方法。默认为 "all"。当策略为 "join" 时,只使用查找器中的字段、包含和 where 条件。
此方法将返回构建的关联对象。
参数
-
string
$associated 目标表的别名。这用于唯一标识关联。
-
array<string, mixed>
$options optional 配置关联定义的选项列表
返回值
Cake\ORM\Association\HasOne
hasValidator() ¶ public
hasValidator(string $name): bool
检查是否已设置验证器。
参数
-
string
$name 验证器的名称。
返回值
bool
implementedEvents() ¶ public
implementedEvents(): array<string, mixed>
获取此表感兴趣的模型回调。
通过实现传统方法,假定表类对相关事件感兴趣。
如果您需要添加非传统事件侦听器,或者希望您的表侦听非标准事件,请重写此方法。
传统方法映射为
- Model.beforeMarshal => beforeMarshal
- Model.afterMarshal => afterMarshal
- Model.buildValidator => buildValidator
- Model.beforeFind => beforeFind
- Model.beforeSave => beforeSave
- Model.afterSave => afterSave
- Model.afterSaveCommit => afterSaveCommit
- Model.beforeDelete => beforeDelete
- Model.afterDelete => afterDelete
- Model.afterDeleteCommit => afterDeleteCommit
- Model.beforeRules => beforeRules
- Model.afterRules => afterRules
返回值
array<string, mixed>
initialize() ¶ public
initialize(array<string, mixed> $config): void
初始化方法
您可以使用此方法定义关联、附加行为、定义验证并执行您需要的任何其他初始化逻辑。
public function initialize(array $config)
{
$this->belongsTo('Users');
$this->belongsToMany('Tagging.Tags');
$this->setPrimaryKey('something_else');
}
参数
-
array<string, mixed>
$config 表的配置。
返回值
void
insertQuery() ¶ public
insertQuery(): Cake\ORM\Query\InsertQuery
创建一个新的插入查询
返回值
Cake\ORM\Query\InsertQuery
invokeFinder() ¶ public
invokeFinder(Closure $callable, Cake\ORM\Query\SelectQuery<TSubject> $query, array $args): Cake\ORM\Query\SelectQuery<TSubject>
参数
-
Closure
$callable 可调用对象。
-
Cake\ORM\Query\SelectQuery<TSubject>
$query 查询对象。
-
array
$args 可调用对象的参数。
返回值
Cake\ORM\Query\SelectQuery<TSubject>
loadInto() ¶ public
loadInto(Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface> $entities, array $contain): Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>
通过在数据库中执行额外的查询并将结果合并到相应的属性中,在传递的实体或实体列表中加载指定的关联。
示例
$user = $usersTable->get(1);
$user = $usersTable->loadInto($user, ['Articles.Tags', 'Articles.Comments']);
echo $user->articles[0]->title;
您还可以一次加载多个实体的关联。
示例
$users = $usersTable->find()->where([...])->toList();
$users = $usersTable->loadInto($users, ['Articles.Tags', 'Articles.Comments']);
echo $user[1]->articles[0]->title;
将覆盖每个实体上要加载的关联的属性。
参数
-
Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>
$entities 单个实体或实体列表
-
array
$contain 一个与
contain()
兼容的数组。
返回值
Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>
另请参阅
marshaller() ¶ public
marshaller(): Cake\ORM\Marshaller
获取用于将数组数据编组/转换为对象的。
如果您希望表对象使用自定义编组逻辑,请重写此方法。
返回值
Cake\ORM\Marshaller
另请参阅
newEmptyEntity() ¶ public @method
newEmptyEntity(): Cake\Queue\Model\Entity\FailedJob
这将创建一个新的实体对象。
小心:这不会触发任何字段验证。此实体可以持久保存为空记录,而不会出现验证错误。在保存之前,始终将必需的字段修补进去。
返回值
Cake\Queue\Model\Entity\FailedJob
newEntities() ¶ public @method
newEntities(array $data, array $options = []): arrayCake\Queue\Model\Entity\FailedJob>
从数组创建实体 + 关联实体列表。
默认情况下,将填充此表上的所有关联。您可以限制哪些关联被构建,或使用 options 参数包含更深的关联。
$articles = $this->Articles->newEntities(
$this->request->getData(),
['associated' => ['Tags', 'Comments.Users']]
);
您可以通过传递 fields
选项来限制构造的实体中存在的字段,此选项也适用于关联。
$articles = $this->Articles->newEntities($this->request->getData(), [
'fields' => ['title', 'body', 'tags', 'comments'],
'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']]
]
);
您可以使用 Model.beforeMarshal
事件在将请求数据转换为实体之前修改它。
参数
-
array
$data -
array
$options 可选
返回值
arrayCake\Queue\Model\Entity\FailedJob>
newEntity() ¶ public @method
newEntity(array $data, array $options = []): Cake\Queue\Model\Entity\FailedJob
从数组创建新的实体 + 关联实体。
默认情况下,将填充此表上的所有关联。您可以限制哪些关联被构建,或使用 options 参数包含更深的关联。
$article = $this->Articles->newEntity(
$this->request->getData(),
['associated' => ['Tags', 'Comments.Users']]
);
您可以通过传递 fields
选项来限制构造的实体中存在的字段,此选项也适用于关联。
$article = $this->Articles->newEntity($this->request->getData(), [
'fields' => ['title', 'body', 'tags', 'comments'],
'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']]
]
);
fields
选项可以让您删除或限制输入数据最终出现在实体中。如果您想放松实体的默认可访问字段,可以使用 accessibleFields
选项。
$article = $this->Articles->newEntity(
$this->request->getData(),
['accessibleFields' => ['protected_field' => true]]
);
默认情况下,数据会在传递到新实体之前进行验证。在无效字段的情况下,这些字段将不会出现在结果对象中。validate
选项可用于禁用对传递数据的验证。
$article = $this->Articles->newEntity(
$this->request->getData(),
['validate' => false]
);
您也可以在 validate
选项中传递要使用的验证器的名称。如果向此函数的第一个参数传递 null
,则不会执行任何验证。
您可以使用 Model.beforeMarshal
事件在将请求数据转换为实体之前修改它。
参数
-
array
$data -
array
$options 可选
返回值
Cake\Queue\Model\Entity\FailedJob
patchEntities() ¶ public @method
patchEntities(iterable $entities, array $data, array $options = []): arrayCake\Queue\Model\Entity\FailedJob>
将 $data
中传递的每个元素合并到 $entities
中找到的实体中,尊重实体上配置的可访问字段。合并是通过匹配 $data
和 $entities
中每个元素的主键来完成的。
无法与 $data
中的任何记录匹配的 $entities
中的那些条目将被丢弃。$data
中无法匹配的记录将被编组为新的实体。
合并 HasMany 或 BelongsToMany 关联时,$data
数组中的所有实体都将出现,可以通过主键匹配的实体将合并数据,但无法匹配的实体将被丢弃。
您可以通过传递 fields
选项来限制合并实体中存在的字段,此选项也适用于关联。
$articles = $this->Articles->patchEntities($articles, $this->request->getData(), [
'fields' => ['title', 'body', 'tags', 'comments'],
'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']]
]
);
您可以使用 Model.beforeMarshal
事件在将请求数据转换为实体之前修改它。
参数
-
iterable
$entities -
array
$data -
array
$options 可选
返回值
arrayCake\Queue\Model\Entity\FailedJob>
patchEntity() ¶ public @method
patchEntity(Cake\Datasource\EntityInterface $entity, array $data, array $options = []): Cake\Queue\Model\Entity\FailedJob
将传递的 $data
合并到 $entity
中,尊重实体上配置的可访问字段。在修改后返回相同的实体。
合并 HasMany 或 BelongsToMany 关联时,$data
数组中的所有实体都将出现,可以通过主键匹配的实体将合并数据,但无法匹配的实体将被丢弃。
您可以通过传递 fields
选项来限制合并实体中存在的字段,此选项也适用于关联。
$article = $this->Articles->patchEntity($article, $this->request->getData(), [
'fields' => ['title', 'body', 'tags', 'comments'],
'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']]
]
);
$article = $this->Articles->patchEntity($article, $this->request->getData(), [
'associated' => [
'Tags' => ['accessibleFields' => ['*' => true]]
]
]);
默认情况下,数据会在传递到实体之前进行验证。在无效字段的情况下,这些字段不会分配给实体。validate
选项可用于禁用对传递数据的验证。
$article = $this->patchEntity($article, $this->request->getData(),[
'validate' => false
]);
您可以使用 Model.beforeMarshal
事件在将请求数据转换为实体之前修改它。
修补标量值(null/布尔值/字符串/整数/浮点数)时,如果属性当前具有相同的值,则不会调用 setter,并且该属性不会被标记为脏。这是一种优化,可以防止在持久保存实体时进行不必要的字段更新。
参数
-
Cake\Datasource\EntityInterface
$entity -
array
$data -
array
$options 可选
返回值
Cake\Queue\Model\Entity\FailedJob
query() ¶ public
query(): Cake\ORM\Query\SelectQuery
为表创建一个新的 SelectQuery 实例。
返回值
Cake\ORM\Query\SelectQuery
removeBehavior() ¶ public
removeBehavior(string $name): $this
从此表的行为注册表中删除行为。
示例
从该表中删除行为。
$this->removeBehavior('Tree');
参数
-
string
$name 添加行为时使用的别名。
返回值
$this
另请参阅
rulesChecker() ¶ public
rulesChecker(): Cake\Datasource\RulesChecker
返回此实例的 RulesChecker。
RulesChecker 对象用于测试实体是否符合规则,这些规则可能涉及复杂的逻辑或需要从相关数据源中获取的数据。
返回值
Cake\Datasource\RulesChecker
另请参阅
save() ¶ public @method
save(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): Cake\Queue\Model\Entity\FailedJob|false
根据标记为脏的字段保存实体,并在成功保存后返回相同的实体,或在出现任何错误时返回 false。
选项
options 数组接受以下键
- atomic: 是否在数据库事务中执行保存和回调(默认:true)
- checkRules: 是否在保存之前检查实体的规则,如果检查失败,将中止保存操作。(默认:true)
- associated: 如果为
true
,则每当为关联定义的属性被标记为脏时,将保存传递的$entity
中找到的一级关联实体。如果为数组,将被解释为要保存的关联列表。可以通过使用此键将自定义选项设为数组值,为关联表对象上的保存提供不同的选项。如果为false
,则不会保存任何关联记录。(默认:true
) - checkExisting: 是否检查实体是否已存在,假设实体被标记为不是新的,并且主键已设置。
事件
保存时,此方法将触发四个事件
- Model.beforeRules: 如果
$options
中的checkRules
键未设置为 false,则将在对传递的实体进行任何规则检查之前触发。侦听器将接收实体、options 数组和操作类型作为参数。如果事件被停止,规则检查结果将设置为事件本身的结果。 - Model.afterRules: 在对实体调用
checkRules()
方法之后立即触发。侦听器将接收实体、options 数组、检查规则的结果和操作类型作为参数。如果事件被停止,检查结果将设置为事件本身的结果。 - Model.beforeSave: 将在计算要持久化的字段列表之前触发。它将实体和选项作为参数接收。选项数组作为 ArrayObject 传递,因此对它的任何更改都将反映在每个侦听器中,并在事件结束时被记住,以便在保存操作的其余部分使用。在任何侦听器中返回 false 将中止保存过程。如果使用事件 API 停止事件,则将返回事件对象的
result
属性。这在侦听器中实现自己的保存策略时很有用。 - Model.afterSave: 在成功插入或保存后触发,侦听器将接收实体和选项数组作为参数。可以通过检查实体的
isNew
方法来确定执行的操作类型(插入或更新),true 表示插入,false 表示更新。 - Model.afterSaveCommit: 在原子保存的交易提交后触发,侦听器将接收实体和选项数组作为参数。
此方法将确定传递的实体是否需要在数据库中插入或更新。它通过检查实体上的 isNew
方法来做到这一点。如果要保存的实体从其 errors()
方法返回非空值,则不会保存它。
保存关联表
默认情况下,此方法将持久化属于关联表的实体,每当与该表中为关联设置的属性名称匹配的脏属性时。可以控制要保存哪些关联以及传递用于保存它们的附加选项。
// Only save the comments association
$articles->save($entity, ['associated' => ['Comments']]);
// Save the company, the employees and related addresses for each of them.
// For employees do not check the entity rules
$companies->save($entity, [
'associated' => [
'Employees' => [
'associated' => ['Addresses'],
'checkRules' => false
]
]
]);
// Save no associations
$articles->save($entity, ['associated' => false]);
参数
-
Cake\Datasource\EntityInterface
$entity -
array<string, mixed>
$options optional
返回值
Cake\Queue\Model\Entity\FailedJob|false
saveMany() ¶ public @method
saveMany(iterable $entities, array<string, mixed> $options = []): iterableCake\Queue\Model\Entity\FailedJob>|false
保存表中的多个实体。
这些记录将在事务中保存,如果任何一条记录由于验证失败或数据库错误而无法保存,则事务将回滚。
参数
-
iterable
$entities -
array<string, mixed>
$options optional
返回值
iterableCake\Queue\Model\Entity\FailedJob>|false
saveManyOrFail() ¶ public @method
saveManyOrFail(iterable $entities, array<string, mixed> $options = []): iterableCake\Queue\Model\Entity\FailedJob>
保存表中的多个实体。
这些记录将在事务中保存,如果任何一条记录由于验证失败或数据库错误而无法保存,则事务将回滚。
参数
-
iterable
$entities -
array<string, mixed>
$options optional
返回值
iterableCake\Queue\Model\Entity\FailedJob>
saveOrFail() ¶ public @method
saveOrFail(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): Cake\Queue\Model\Entity\FailedJob
尝试保存实体,如果应用程序规则检查失败,实体包含错误或保存被回调中止,则抛出 PersistenceFailedException。
参数
-
Cake\Datasource\EntityInterface
$entity -
array<string, mixed>
$options optional
返回值
Cake\Queue\Model\Entity\FailedJob
selectQuery() ¶ public
selectQuery(): Cake\ORM\Query\SelectQuery
创建一个新的选择查询
返回值
Cake\ORM\Query\SelectQuery
setConnection() ¶ public
setConnection(Cake\Database\Connection $connection): $this
设置连接实例。
参数
-
Cake\Database\Connection
$connection 连接实例
返回值
$this
setDisplayField() ¶ public
setDisplayField(list<string>|string $field): $this
设置显示字段。
参数
-
list<string>|string
$field 用作显示字段的名称。
返回值
$this
setEntityClass() ¶ public
setEntityClass(string $name): $this
设置用于为此表填充行的类。
参数
-
string
$name 要使用的类的名称
返回值
$this
抛出
Cake\ORM\Exception\MissingEntityException
当找不到实体类时
setEventManager() ¶ public
setEventManager(Cake\Event\EventManagerInterface $eventManager): $this
返回此对象的 Cake\Event\EventManagerInterface 实例。
您可以使用此实例向对象事件注册任何新的监听器或回调,或者创建您自己的事件并随意触发它们。
参数
-
Cake\Event\EventManagerInterface
$eventManager 要设置的事件管理器
返回值
$this
setPrimaryKey() ¶ public
setPrimaryKey(list<string>|string $key): $this
设置主键字段名称。
参数
-
list<string>|string
$key 设置要用作主键的新名称
返回值
$this
setRegistryAlias() ¶ public
setRegistryAlias(string $registryAlias): $this
设置用于创建此表实例的表注册表键。
参数
-
string
$registryAlias 用于访问此对象的键。
返回值
$this
setSchema() ¶ public
setSchema(Cake\Database\Schema\TableSchemaInterface|array $schema): $this
设置描述此表属性的架构表对象。
如果传递数组,则将使用它构造一个新的 TableSchemaInterface 并用作该表的模式。
参数
-
Cake\Database\Schema\TableSchemaInterface|array
$schema 要用于该表的模式
返回值
$this
setTable() ¶ public
setTable(string $table): $this
设置数据库表名。
这可以包括数据库模式名称,格式为“schema.table”。如果名称必须用引号引起来,则启用自动标识符引号。
参数
-
string
$table 表名。
返回值
$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
subquery() ¶ public
subquery(): Cake\ORM\Query\SelectQuery
创建一个新的 Query 实例,其中字段自动别名禁用。
这对于子查询很有用。
返回值
Cake\ORM\Query\SelectQuery
updateAll() ¶ public
updateAll(Cake\Database\Expression\QueryExpressionClosure|array|string $fields, Cake\Database\Expression\QueryExpressionClosure|array|string|null $conditions): int
更新所有匹配的记录。
根据 $conditions 将 $fields 设置为提供的值。此方法不会触发 beforeSave/afterSave 事件。如果你需要这些,首先加载一个记录集合并更新它们。
参数
-
Cake\Database\Expression\QueryExpressionClosure|array|string
$fields 字段 => 新值的哈希。
-
Cake\Database\Expression\QueryExpressionClosure|array|string|null
$conditions 要使用的条件,接受任何 Query::where()
返回值
int
updateQuery() ¶ public
updateQuery(): Cake\ORM\Query\UpdateQuery
创建一个新的更新查询
返回值
Cake\ORM\Query\UpdateQuery
validateUnique() ¶ public
validateUnique(mixed $value, array<string, mixed> $options, array|null $context = null): bool
用于检查列值唯一性的验证器方法。这旨在与验证 API 一起使用,而不是直接调用。
示例
$validator->add('email', [
'unique' => ['rule' => 'validateUnique', 'provider' => 'table']
])
唯一验证可以限定到另一列的值
$validator->add('email', [
'unique' => [
'rule' => ['validateUnique', ['scope' => 'site_id']],
'provider' => 'table'
]
]);
在上面的例子中,电子邮件唯一性将仅限于具有相同 site_id 的行。仅当限定字段存在于要验证的数据中时,才会使用限定。
参数
-
mixed
$value 要检查唯一性的列的值。
-
array<string, mixed>
$options 选项数组,可选地包含“scope”键。也可以是验证上下文,如果没有选项。
-
array|null
$context optional 验证上下文或 null。
返回值
bool
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