CakePHP
  • 文档
    • 书籍
    • API
    • 视频
    • 报告安全问题
    • 隐私政策
    • 标识和商标
  • 商业解决方案
  • 纪念品
  • 自驾游
  • 团队
  • 社区
    • 社区
    • 参与
    • 问题 (Github)
    • 面包店
    • 精选资源
    • 培训
    • 聚会
    • 我的 CakePHP
    • CakeFest
    • 新闻简报
    • 领英
    • YouTube
    • 脸书
    • 推特
    • Mastodon
    • 帮助和支持
    • 论坛
    • Stack Overflow
    • IRC
    • Slack
    • 付费支持
CakePHP

C 队列 2.x API

  • 项目
    • 队列
      • CakePHP
      • Chronos
      • Elastic Search
      • 队列
  • 版本
    • 2.x
      • 2.x
      • 1.x

命名空间

  • Cake\Queue
    • 命令
    • 消耗
    • 作业
    • 侦听器
    • 邮件器
    • 模型
      • 实体
      • 表
    • 队列

类 FailedJobsTable

FailedJobs 模型

命名空间: Cake\Queue\Model\Table

常量

  • 字符串
    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::belongsTo()
\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
如果正在重新加载行为。
另请参阅
\Cake\ORM\Behavior

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 创建实例而没有连接的情况下获取回退连接名称。

返回值
字符串
另请参阅
\Cake\ORM\Locator\TableLocator::get()

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
另请参阅
\Cake\ORM\Table::delete()

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

getAlias() ¶ public

getAlias(): string

返回表别名。

返回值
字符串

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

getDisplayField() ¶ public

getDisplayField(): list<string>|string

返回显示字段。

返回值
list<string>|string

getEntityClass() ¶ public

getEntityClass(): class-stringCake\Datasource\EntityInterface>

返回用于为此表填充行的类。

返回值
class-stringCake\Datasource\EntityInterface>

getEventManager() ¶ public

getEventManager(): Cake\Event\EventManagerInterface

返回此对象的 Cake\Event\EventManager 管理器实例。

您可以使用此实例向对象事件注册任何新的监听器或回调,或者创建您自己的事件并随意触发它们。

返回值
Cake\Event\EventManagerInterface

getPrimaryKey() ¶ public

getPrimaryKey(): list<string>|string

返回主键字段名称。

返回值
list<string>|string

getRegistryAlias() ¶ public

getRegistryAlias(): string

返回用于创建此表实例的表注册表键。

返回值
字符串

getSchema() ¶ public

getSchema(): Cake\Database\Schema\TableSchemaInterface

返回描述此表属性的架构表对象。

返回值
Cake\Database\Schema\TableSchemaInterface

getTable() ¶ public

getTable(): string

返回数据库表名。

这可以包括数据库模式名称,如果使用 setTable() 设置。

返回值
字符串

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>
另请参阅
\Cake\ORM\Query::contain()

marshaller() ¶ public

marshaller(): Cake\ORM\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
另请参阅
\Cake\ORM\Behavior

rulesChecker() ¶ public

rulesChecker(): Cake\Datasource\RulesChecker

返回此实例的 RulesChecker。

RulesChecker 对象用于测试实体是否符合规则,这些规则可能涉及复杂的逻辑或需要从相关数据源中获取的数据。

返回值
Cake\Datasource\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

setAlias() ¶ public

setAlias(string $alias): $this

设置表别名。

参数
string $alias

表别名

返回值
$this

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

属性详细信息

$_alias ¶ protected

赋予此特定实例的人类可读名称。多个代表同一数据库表的对象可以通过使用不同的别名来存在。

类型
字符串|null

$_associations ¶ protected

此表的关联容器。

类型
Cake\ORM\AssociationCollection

$_behaviors ¶ protected

此表的 BehaviorRegistry

类型
Cake\ORM\BehaviorRegistry

$_connection ¶ protected

连接实例

类型
Cake\Database\Connection|null

$_displayField ¶ protected

代表行的人类可读表示的字段名称

类型
list<string>|string|null

$_entityClass ¶ protected

代表此表单行的类的名称

类型
字符串|null

$_eventClass ¶ protected

新事件对象的默认类名。

类型
字符串

$_eventManager ¶ protected

此对象正在使用的 Cake\Event\EventManager 实例,用于分派内部事件。

类型
Cake\Event\EventManagerInterface|null

$_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
OpenHub
Pingping
Linode
  • 商业解决方案
  • 展示
  • 文档
  • 书籍
  • API
  • 视频
  • 报告安全问题
  • 隐私政策
  • 标识和商标
  • 社区
  • 参与
  • 问题 (Github)
  • 面包店
  • 精选资源
  • 培训
  • 聚会
  • 我的 CakePHP
  • CakeFest
  • 新闻简报
  • 领英
  • YouTube
  • 脸书
  • 推特
  • Mastodon
  • 帮助和支持
  • 论坛
  • Stack Overflow
  • IRC
  • Slack
  • 付费支持

使用 CakePHP API Docs 生成