2014-09-11 42 views
1

我從CSV文件導入用戶的數據。現在,當我嘗試更新用戶的,則是給我下面的錯誤蛋糕PHP如何更新AROS

AclNode::node() - Couldn't find Aro node identified by "Array ([Aro0.model] => User [Aro0.foreign_key] => 292) " 

原因是我已經從用戶的CSV文件導入數據,但沒有更新我的AROS。

我已經用下面的命令行"cake AclExtras.AclExtras aco_sync"更新的ACO。

誰能告訴如何從CSV導入生成新的用戶ID更新我的AROS表。

謝謝。

回答

1

有兩種方法來更新您的ARO:

  1. 附上AclBehavior到用戶模型,並寫將使用User模型的保存方法保存CSV數據的方法。

    // In User Model: 
    public $actsAs = array(
        'Acl' => array(
        'type' => 'requester' 
    ); 
    
    // In your importCSV() method assuming in your UsersController: 
        $this->User->saveMany($users); 
    
  2. 如果你直接導入用戶數據到你的數據庫,而無需使用型號::保存()mehthod,通過命令行使用acl殼進入的ARO。

    蛋糕ACL創建ARO parent_ARO User.user_id

要了解上面的語法,只需鍵入cake acl create。 您必須使用您添加的所有user_ids運行上述命令。

更新:

  • 你可以說,發現所有的新用戶shell腳本,可以使用型號:: create()和型號::保存()方法如下:
  • 創建一個文件:app/Console/Command/AclGenShell.php。

    class AclGenShell extends AppShell { 
    
        public $uses = array('User', 'Aro); 
    
        public function main() { 
         $users = $this->User->find('all'); 
         foreach ($users as $user) { 
          $this->Aro->create(); 
          $this->Aro->save(array(
           'model' => 'User', 
           'foreign_key' => $user['User']['id'], 
           'parent' => 'parent_ARO_alias' 
          )); 
         } 
        } 
    } 
    

    然後運行: cake acl_gen

    +0

    謝謝吉米。第二個選擇是爲我工作。但是,有什麼方法可以通過單擊進行更新。現在我可以通過單獨添加「cake acl create aro Group.1 User.292」來完成。我有300名用戶的名單,所以我必須做300次嗎? – user3860096 2014-09-11 11:53:59

    +0

    已更新解決方案。看看選項3. – jimmymadon 2014-09-11 12:21:35

    +0

    謝謝吉米,它對我很好。我節省了我的時間。再次感謝 – user3860096 2014-09-12 08:43:23