我将TranslateBehavior
用于两个字段:
我从模型中删除这些字段,因为字段的内容将保存在i18n table
中。它工作得很好,但有时在我的应用程序中我使用$this->Model->hasField('name')
,当我从Model表中删除字段后,此函数始终返回false。有一些解决方案吗?
答案 0 :(得分:2)
翻译行为使用virtual fields,因此如果您为不存在的字段查询hasField
,它将正确返回false,因为该字段不会身体存在。
翻译行为在查询之前按需创建虚拟字段定义,并在查询后销毁它们。因此,您不能只使用the second parameter of hasField,除非您设法在翻译行为的beforeFind和afterFind方法之间调用它,结果将始终为false:
$willAlwaysBeFalse = $this->hasField('name', true);
您可以选择以下几种方法:
hasField
的第二个字段允许您获得肯定的回复hasField
始终返回true 最简单的解决方案是不删除该字段。这也将确保在数据可能为空白时,如果禁用翻译行为或存在某种错误,您的模型仍然有效。