CakePHP 1.3 の TreeBehavior を使用しています。1 つの DB テーブルで、すべてのモデル レコードを取得します。すべてのレコードにはtype、モデル名が格納されるフィールドがあります。今まですべてがチャームとして機能しています。しかし、特定のアクションでいくつかのエラーが発生します。まず第一に$this->Article->verify()、ほとんどすべてのレコードでエラーが発生します。
Array
(
[0] => Array
(
[0] => index
[1] => 1
[2] => missing
)
[1] => Array
(
[0] => index
[1] => 2
[2] => missing
)
[2] => Array
(
[0] => index
[1] => 3
[2] => missing
)
....
エラーのあるレコードとエラーのないレコードの間に違いはありません
私は試しRecoverましたが、それでも同じです。これらのエラーが表示される理由とその意味を教えてください。ツリー データを確認しましたが、すべてのフィールド ( parent_id、lft、rght) は正しいです。
もう1つの問題:
upレコードとツリーを移動したいと思いdownます。scopeレコードに設定するtypeと移動しますが、他のタイプのすべての子レコードは移動しません。私のツリーは次のようなものです:
Category
Category
Category
Attachment
Category
Attachment
Article
Attachment
Attachment
Article
Attachment
Attachment
Category
Category
レコードの移動を設定scopeしないと、ツリーの終わりが表示されず、他のレコード タイプ間で移動し始めることがあります。scopeこれを回避するにはどうすれば設定できますか?
編集:考えられる問題を追跡しましたが、おそらくすべては、1 つのテーブルを使用して複数のモデルで両方TreeとTranslate(言及していません) 両方の動作を使用することに起因します。それでどうなるか:
各モデルのデータを保存すると、翻訳とともに i18n テーブルにレコードも保存されます。また、テーブルをチェックverifyまたはrecovering する場合、ツリー動作は現在のモデルの投稿のみを「参照」し、他のモデルからのレコードを表示しないため、「欠落したインデックス」も提供します。
これを修正する方法、機能させる方法、または他のオプションを探す方法はありますか?
1 つのデータベース内で複数のツリーを使用するオプションはありますか。したがって、rght、lft の値はすべてのモデルで複製されますが、互いに「認識」しないため、競合は発生しません。同じ構造を持つ10以上ではなく、1つのテーブルを使用するだけです