2012-03-19 14 views
0

を経由して関連するユーザーが削除されますが、ユーザはマネージャがあります。CakePHPは:ユーザーを削除すると、私は、ユーザーを削除できるようにしたいbelongsToの

var $belongsTo = array(
     'Manager' => array(
      'className' => 'User', 
      'foreignKey' => 'manager_id', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '' 
     ), 
    ); 

を、ユーザーが削除されるたびに、そのすべてが「子供たちが」ですも削除されます。

たとえば、私はユーザーAを削除します。ユーザーAはユーザーB、C、およびDのマネージャです。Aが削除されると、B、C、およびDはAを持つため、manager_idです。

私の質問です - これは起こっているはずですか?そして、これが起こるのを防ぐ方法がありますか?

ありがとうございます!

答えて

0

これはACLの問題でした。全く予想外でした。ユーザはManagerを使用してツリー構造で操作するので、ユーザはでのみ更新されるlftrghtフィールドを持ちます。簡単な解決策は、lftrght0に設定してユーザーを解離することですが、詳細を考えた後、manager_idNULLに設定し、ツリーを再構成するように保存します(afterSave経由)。

うわー。それはかなり問題でした。

3

はそれが動作を意図されていて、団体構成アレイに

'dependent' => false, 

を追加することによって、それを止めることができ、本を読みます。

http://book.cakephp.org/1.2/en/view/78/Associations-Linking-Models-Togetherを参照し、このページで「依存」を検索してください。

新しいプロジェクトの場合は2.0を使用することをお勧めします.1.2は以前から廃止されています。

+0

迅速な対応をありがとう。しかし、 'dependent'キーは' hasOne'と 'hasMany'の関係にしか見えません。これは新しいプロジェクトではありません:P私は同意します。私は自分のサイドプロジェクトに2.1を使っていて、もっと笑っています。 – Garrett

+0

deleteはhasOneとhasManyを意味しているので、この関係を他のものに置き換えてください。 hasMany => ManagedUsers ..これはburzumのコメントで動作するはずです –

関連する問題