【发布时间】:2016-04-07 07:02:36
【问题描述】:
情况
使用 Cake 3.2.6
在我的 CostItemsTable 中,
我有一个buildRules 函数
/**
* Returns a rules checker object that will be used for validating
* application integrity.
*
* @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
* @return \Cake\ORM\RulesChecker
*/
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->existsIn(['foreign_model_id'], 'ForeignModels'));
return $rules;
}
我想要什么
我的 CostItems 实体有 2 个字段,分别称为 foreign_model 和 foreign_model_id。
foreign_model_id 充当外键。 foreign_model 充当将成为 CostItems 表的父表的表。
所以一个典型的记录可以有 foreign_model 作为 GeneralCostCategories 和 foreign_model_id 作为 1。
我尝试了什么
我尝试在 buildRules 函数中记录 $this,但没有发现任何有用的信息可以让我动态更改此规则。
$rules->add($rules->existsIn(['foreign_model_id'], 'ForeignModels'));
到
$rules->add($rules->existsIn(['foreign_model_id'], $entity->foreign_model));
【问题讨论】:
-
请注意,默认情况下,当您加载 CostItem 时,
foreign_model可能会被foreign_model_id引用的实体覆盖;将列名更改为foreign_model_name或类似名称将消除此命名问题。 (我认为您可能还可以使用配置来更改将用于实体的属性名称,但我还没有研究过。)
标签: validation cakephp cakephp-3.0 business-rules