私はTranslateBehavior
2つのフィールドで使用します:
- 名前
- ナメクジ
フィールドのコンテンツは に保存されるため、これらのフィールドをモデルから削除しますi18n table
。それは完全に機能しますが、私が使用しているアプリで$this->Model->hasField('name')
モデルテーブルからフィールドを削除すると、この関数は常に false を返します。何か解決策はありますか?
私はTranslateBehavior
2つのフィールドで使用します:
フィールドのコンテンツは に保存されるため、これらのフィールドをモデルから削除しますi18n table
。それは完全に機能しますが、私が使用しているアプリで$this->Model->hasField('name')
モデルテーブルからフィールドを削除すると、この関数は常に false を返します。何か解決策はありますか?
変換動作では仮想フィールドが使用されます。たとえば、存在しないhasField
フィールドをクエリすると、フィールドが物理的に存在しないため、正しく false が返されます。
変換動作は、クエリの前に必要に応じて仮想フィールド定義を作成し、クエリの後にそれらを破棄します。そのため、hasField の 2 番目のパラメーターをそのまま使用することはできません。変換動作のbeforeFindメソッドとafterFindメソッドの間で呼び出すことができない限り、結果は常に false になります。
$willAlwaysBeFalse = $this->hasField('name', true);
あなたができることがいくつかあります。
hasField
do の 2 番目の引数で肯定応答を取得できるように、変換されたフィールドのダミー仮想フィールドを定義します。hasField
常に true を返します最も簡単な解決策は、フィールドを削除しないことです。これにより、データが空白であっても、変換動作が無効になっている場合や何らかのエラーが存在する場合でもモデルが機能することが保証されます。