2012-03-19 28 views
0

相關的我希望能夠刪除用戶的用戶,但用戶具有管理員:的CakePHP:刪除用戶刪除通過屬於關聯

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字段,該字段僅在afterSave中更新。簡單的解決方案是通過將lftrght設置爲0來解離用戶,但經過深思熟慮後,我將其manager_id設置爲NULL並保存,以便樹自我重組(通過afterSave)。

哇。這是相當大的問題。

3

讀過書,是預期的行爲,你可以通過添加

'dependent' => false, 

向消協配置陣列停止。

請參閱http://book.cakephp.org/1.2/en/view/78/Associations-Linking-Models-Together並在此頁面上搜索「從屬」。

而且我建議你使用2.0,如果它是一個新項目,1.2現在已經過時很長時間了。

+0

感謝您的快速響應。雖然,依賴關鍵似乎只適用於hasOne和hasMany關係。這不是一個新項目:P我同意。我使用2.1作爲我的副項目,並發現自己微笑更多。 – Garrett 2012-03-19 19:54:25

+0

既然情況是刪除是爲了hasOne和hasMany,你應該改變這個關係到別的東西。 hasMany => ManagedUsers ..應該與burzum的評論一起工作 – 2012-03-20 01:17:14