我使用TranslateBehavior
两个字段:
- 姓名
- 蛞蝓
我从模型中删除这些字段,因为字段的内容将保存在i18n table
. 它工作得很好,但有时在我使用的应用程序中$this->Model->hasField('name')
,当我从模型表中删除字段之后,这个函数总是返回 false。有什么解决办法吗?
我使用TranslateBehavior
两个字段:
我从模型中删除这些字段,因为字段的内容将保存在i18n table
. 它工作得很好,但有时在我使用的应用程序中$this->Model->hasField('name')
,当我从模型表中删除字段之后,这个函数总是返回 false。有什么解决办法吗?
翻译行为使用虚拟字段,例如,如果您查询不hasField
存在的字段- 它会正确返回 false,因为该字段实际上不存在。
翻译行为在查询前按需创建虚拟字段定义,并在查询后销毁它们。因此,您不能只使用hasField 的第二个参数,因为除非您设法在翻译行为的beforeFind和afterFind方法之间调用它,否则结果将始终为 false:
$willAlwaysBeFalse = $this->hasField('name', true);
您可以选择以下几件事:
hasField
确实允许您获得肯定的响应hasField
总是返回 true最简单的解决方案是不删除该字段。这也将确保,虽然数据可能是空白的,但如果禁用翻译行为或存在某种错误,您的模型仍然可以工作。