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
またはrecover
ing する場合、ツリー動作は現在のモデルの投稿のみを「参照」し、他のモデルからのレコードを表示しないため、「欠落したインデックス」も提供します。
これを修正する方法、機能させる方法、または他のオプションを探す方法はありますか?
1 つのデータベース内で複数のツリーを使用するオプションはありますか。したがって、rght、lft の値はすべてのモデルで複製されますが、互いに「認識」しないため、競合は発生しません。同じ構造を持つ10以上ではなく、1つのテーブルを使用するだけです