2014-09-11 114 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